Realmente, o negócio deve ficar todo no Model (ou em Services, sob outra abordagem). Às vezes, colocamos alguma lógica nos controllers, seja para fins didáticos ou quando a lógica é muito, muito simples, que não requer uma subida ao Model.
Um exemplo clássico é a ação de criar um usuário novo no Laravel. Como a validação é sempre papel do controller e esta é a parte mais difícil de uma ação desse tipo, é comum encontrar um User::create no próprio controller, uma vez que o "create" é um método comum a todos os models nesse framework.
Há muitas regras pra esses padrões de projeto, mas a primeira e, na minha opinião, a mais importante, é o bom senso. Vamos fazer códigos de forma que o "eu do futuro" não se envergonhe do "eu de hoje".