Я понял что в репозитории городить кучу методов для поиска не вариант (сразу отмечу что в моем понимании репозиторий - не коллекция). Остается либо использовать какой-то универсальный метод (где условия будут разбросаны по проекту) или... спецификации. Объясню поподробнее.
Изначально шаблон проектирования подразумевает проверку объектов на соответствие условию.
Спецификация
Строит ясное описание бизнес-правил, на соответствие которым могут быть проверены объекты. Композитный класс спецификация имеет один метод, называемый isSatisfiedBy, который возвращает истину или ложь в зависимости от того, удовлетворяет ли данный объект спецификации.
designpatternsphp
Я подумал что его можно использовать не для проверки уже готовых выборок, а для будущих. Проще говоря, создаются классы которые принимают заранее обозначенные данные и которые передаются в метод find в репозитории.
Таким образом, мы все еще сохраняем преимущество методов (все условия в одном месте), но и имеем только 1 метод в репозитории.
Уверен что такое могли придумать уже 30 лет назад. Просто хочу убедиться что такой подход имеет место быть. Еще интересно было бы узнать о его недостатках.