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