So, have I missed something here?
You missed the fact that it is driven through the EPR and message selector.
My suspicion, given your description so far, is that you may be suffering from a bug that has been fixed in the CP branches and will shortly be fixed in trunk (for ESB 4.5).
If you can provide a better description of your real issue then we may be able to confirm this.
From your feedback I've discovered that DefaultJmsReplyToEpr class indeed sets a message selector.
But this class is only used when you are using the default reply queue (_reply). But if you use a non-default reply queue then the message selector will not be set.
So as far as I can tell there is a subtle contract saying that you must use the default replyTo queue when using ServiceInvoker.
You can use other EPRs or queues if you wish but you are then responsible for handling the request/response correlation. We handle the common case, that of request/response using an associated queue, but you are not confined to this.
As an example, there is no reason why any response EPR must match the transport used for a request and, as such, the jms correlation id is not necessarily the identifier which should be used.
What is it that you are trying to achieve?