Конечно, же первый вариант будет лучше(так, обычно, все и делают). Инжектите интерфейс, определение храните в отдельном пакете (domain, system, helper etc), а имплементацию в service.
В первом случае горутина заблокируется, т.к. никто не читает из небуферизированного канала.
Во втором случае используется буферизированный канал, следовательно горутина заблокируется только тогда, когда (в вашем случае) вы попробуете записать в него 101-й элемент(читай: канал заполнится).