I’ve done a few OSGi apps, quite simple, but multiple versions did sometimes creep in. The answer whether that’s a nightmare or not is … it depends. If one app depends on two versions of Spring, then Yes, You Are Royally Screwed. However, if two libraries have dependencies on two different versions of, I dunno, commons-lang, then it’s no sweat at all. Eclipse plugins are another example here, where you can have different plugins using different libraries without interfering with each other.
And beyond plugins and libraries with skewed versions, remember you can have multiple apps outright. I never bother with that feature (I just spin up Jetty on a new port) but it’s still handy for a lot of people.
Going beyond multiple apps and having entirely separate java environments in one JVM is called multitenancy. That was not one of jigsaw’s stated goals, but it’d certainly give it a boost. One of the best uses of multitenancy is in mobile apps, and Dalvik has some support for it (but it’s kind of crude). Sun actually wrote a multitenant VM a ways back and Oracle makes noises about merging it into openjdk, so we might see it in java version, I dunno, 15 or so?