A native implementation of PSR-0 using only the autoloader from the PSR-0 example in the spec would expect a folder structure like this:
League\Oauth2\Client\Foo = myapp/somefolder/League/Oauth2/Client/Foo.php
League\Oauth2\Server\Bar = myapp/somefolder/League/Oauth2/Server/Bar.php
If I was making these as packages, I could make them into two packages, which would be installed in different locations, because thats how Composer rolls:
League\Oauth2\Client\Foo = myapp/vendor/league/oauth2/src/League/Oauth2/Client/Foo.php
League\Oauth2\Server\Bar = myapp/vendor/league/oauth2-server/src/League/Oauth2/Server/Bar.php
If I wanted to work with a bunch of League packages without ever using Composer then it would look like this:
That would be the folder structure, because if I was installing this with Composer I wouldnt be trying to randomly do this with the SplClassLoader. If I was doing this with the SplClassLoader I wouldnt be using Composer, and I would instead be copying and pasting random chunks of code around.
This is how something like the Zend Framework always used to work in ZF1. I could make ZF2 work exactly the same by grabbing all of the code out of a ZIP file, merging them together into one folder and using the SplClassLoader. But why the fuck would I do that if I could use Composer to install them?
If you have multiple PSR-0 autoload areas (multiple Composer packages for example) then you have to mount them at multiple areas, just like your second example, which will work perfectly.