Основная проблема объектных библиотек (вне зависимости от языка) в
том, что авторы не могут предусмотреть все варианты использования.
А чаще всего возникает необходимость использовать какую-то часть
библиотеки отдельно, вне иерархии. Например не на поток данных, а
на файл или структуру в памяти. Процедурные библиотеки в этом плане
проще, там только с хедерами могут накосячить, напихав в них всё
что ни попадя. Но с этим можно бороться. С иерархией классов уже
ничего не сделать
.
Это моё личное предвзятое мнение. Любое совпадение с реальностью является случайным и непреднамеренным.