Самый большой недостаток (вы упомянули об этом сами) при повторном использовании сторонних библиотек заключается в том, что вы сильно связаны и зависимы от того, как работает эта библиотека и как она должна использоваться, если вам не удастся создать средний интерфейсный слой, который может позаботься об этом.
Но создать общий интерфейс сложно, поскольку замена существующей библиотеки другой более или менее требует, чтобы новая функциональность работала аналогичным образом. Тем не менее, вы всегда можете переписать код, используя его, но это может быть очень сложно и займет много времени.
Другой аспект заключается в том, что если вы заново изобретаете колесо, вы полностью контролируете происходящее и можете вносить изменения по своему усмотрению. Это может быть совершенно невозможно, если вы зависите от того, какая библиотека третьей части работает, и постоянно предоставляет вам обновления и исправления ошибок. С другой стороны, повторное использование кода таким образом позволяет вам сосредоточиться на других вещах в вашем программном обеспечении, что иногда может быть целесообразным.
Всегда есть компромисс.