Drupal use composer to manage the 3rd party libraries (Symfony, guzzle, etc...).
The problem is Drupal has versioned the vendor folder into the core directory; it is a problem because, if you added a new library in the root composer, you change the vendor directory and change the composer.json/composer.lock. So, if Drupal releases a new version, your changes will be deleted.
The Composer Manager module is created to solve the problem. You need to include a composer.json file in your module; the Composer Manager module downloads the library and registers a new autoload file (the second autoload).
The problem with this is only when you need use a middle-ware library, since the Composer Manager module registers a new autoload in the Request Kernel Event. This event is called after the middle-ware so this library is not available in the middle-ware layer.
In most cases, the Composer Manager module is the best solution to add new vendors.
There is the issue Remove external dependencies from the core repo and let Composer manage the dependencies instead.