If a simpler configuration based solution is desirable, we could simply offer the use of the calling thread's context classloader, instead of requiring the caller to provide a classloader. This would be accomplished via a boolean configuration attribute and the startService() method would make the appropriate registration. We wouldn't need to provide a classloader attribute.
The boolean configuration approach seems fine. It's implements the most likely registration technique. HAServiceMBeanSupport is just a helper class, so nothing wrong with making people implement more exotic strategies themselves.
Encapsulate the registration as a method called from startService(). Expose the method as protected. That way if people want to override the behavior, it's easy.
Sounds good. I'll make the changes later today unless we receive further input.