Follows from C variadic functions (a)

A convention is followed for functions taking a va_list. This includes functions like vprintf. We call va_start on the list before the function is called and call va_end on it after the function returns. This means that the v* functions don’t make calls to va_start or va_end.

Observe that call to va_start will only make sense in a function taking variadic arguments, so it has to be made by the function calling the v* function. The part about who calls va_end is a convention.