> Assuming the correct classload is passed as the second paramenter of ServiceLoader.load() this method should still work correctly, right?

No, even passing the ClassLoader still won't work.  Here's a somewhat decent write-up: http://blog.osgi.org/2013/02/javautilserviceloader-in-osgi.html

It's not just a matter of ClassLoading, but more along the lines of OSGi *completely* replacing the Java SE service concepts with OSGi services.