With the MissingSkipper wrapper proposed above, the behavior of adding skipmissing to every argument would just be a fallback. The wrapper function can be overloaded to have the proper behavior for each function:
(s::MissingSkipper{typeof(quantile)})(x, p; kwargs...) =
quantile(skipmissing(x), p; kwargs...)
Then quantile?(x, p) would work as expected.
But if ? supports both vectors and functions as proposed then we could also just write
quantile(xs?, [0.1, 0.2])
reduce(+, xs?)