implementation делает зависимость внутренней для модуля; api реэкспортирует её потребителям модуля. Лишний api раздувает classpath и замедляет сборку.
Разбор
- Если типы зависимости в public API модуля — нужен api.
- Иначе implementation — предпочтительный дефолт.
- compileOnly / runtimeOnly — особые случаи (аннотации, SPI).
- Аудит api — часть гигиены multi-module.
Итог
Минимизируйте api: меньше транзитивности — быстрее и чище граф.