Currently Subject state$ and input$ are always created. How about checking the length of the callback argument and only create the Subjects that are used by the callback.
One caveat of this approach is the length check does not recognize spread arguments and the use of arguments object. But I think it is rare to use callback this way.