A JRMPInvoker (Service MBean, RemoteServer, etc) is plugged into the JMX spine and sits there listening for remote invocations and putting them on the invocation bus. It's server-side.
The client-side object that starts the invocation sequence is a dynamic proxy, created by a JRMPInvokerProxy MBean. The dynamic proxy gets on the client because the client process looks it up in JNDI and downloads it.
Once downloaded, the client process could use it by calling a method on it. The dynamic proxy's invocation handler applies a whole chain of client-side interceptors on the Invocation, and the last interceptor in the chain happens to be an InvokerInterceptor that knows how to call the JRMPInvoker (via JRMPInvokerProxy) over RMI/JRMP.