Существует несколько причин для поддержки более чем одного загрузчика классов.
Первое: разделение классов.
Представьте себе сервер приложений. Несколько независимых проектов могут включать в себя одни и те же библиотеки. Если у каждого приложения есть собственный загрузчик классов, они могут загружать разные версии без коллизий, и для каждого загрузчика классов создаются статические поля AFAIK.
Второе: загрузчики классов могут быть перезаписаны для изменения классов.
Загрузчик классов может улучшать классы во время загрузки. Полезно для аспектно-ориентированного программирования (AspectJ) или для добавления кода отладки или профилирования. Простой способ изменить только одну библиотеку, но не другую, - загрузить ее через разные загрузчики классов.