Creating an object by passing a metatype to a generic function uses the default parameter values of the base class' init

I don't think this is possible at the moment, since Swift does not generally allow overriding default parameters in subclasses. See the long discussion in [Pitch] Allow default parameter overrides about this topic.