I assume you are referring to the mfargs typespec:
mfargs() = {M :: module(), F :: atom(), A :: [term()] | undefined}
which requires a list of terms for A.
For me the disconnect is that I would expect:
there to be a ModuleName.child_spec/0 that simply populates A in mfargs with what’s specified in the use GenServer options or defaults to a plain empty list.
that it would be ModuleName.child_spec/0 (rather than ModuleName.child_spec([])) that is used when one simply uses the module name as a child spec.
As far as I’m aware there isn’t functionality equivalent to ModuleName.child_spec/1 with :gen_server.
Now to me personally it doesn’t really matter - it’s simply a convenience feature, so it will never be a showstopper as I can always just manually crank out