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