Ok, i still do not see why drivers should be packaged in this way.

As you know i strongly disagree on having multiple ways to do same thing - in example run Zeppelin, so first thing does not sound as an argument to me.

About the classpath of zeppelin: if i recall correct, we pack each subproject JAR in such way that manifest contains the exact list of it's dependencies (paths to each .jar) and not just root path to /lib folder. I thought that means that zeppein class path is restricted to only those libraries and anything else, be it in the same directory, does not count and will not be at the class path.
Am i wrong? 

If i'm right - we can have each driver with dependencies packaged inside jar sitting in the /lib folder, only thing we need then - in DriverFactory load dependencies of each driver from inside the jar to the separate classloader.