Если логика - это доп условия запросов релейшенов, то их стоит писать в скоупах модели. Если логика - это нечто большее, чем простые скоупы, например, сравнение, объединение, вычисление, произведение каких-либо других действий, то это лучше выносить в сервисы (app/Services).
оно бывает иногда удобно, когда у тебя сложные условия для выборки юнионы всякие и прочее
Единственный раз мне понадобилось использовать "репозиторий который описывают в мануалах" а точнее ioc когда писал интерфейс с несколькими реализациями =)))