Потому что контроллер по своей сути не должен работать с данными, не должен содержать логику. Его задача - принять запрос, возможно, проверить данные на валидность и отдать ответ. Всё! Больше он делать ничего не умеет. Вся бизнес логика должна выноситься в сервисный слой. А из контроллера вы будете лишь вызывать метод этого сервиса и получать ответ. В принципе, в контроллере можно писать логику, если код короткий, тогда, конечно, создавать сервис будет излишним. С данными должен работать репозиторий (как по ссылке, которую вы привели)! Не нужно делать этого в контроллере.
Мне привычно работать с моделью прямо в контроллере
Может быть вам и привычнее, но это не правильно. Контроллеры разрастаются и становятся жирными. Отсюда же вытекает и то, что вам приходится дублировать код.
$post = new Post;
$post->slug = $request->slug;
$post->name = $request->name;
$post->story = $request->story;
$post->save();
Этот кусок вам, возможно, потребуется использовать еще где-то. И да, вот такой способ, если вашей целью является просто вставка данных, юзать не стоит. В этом нет смысла. Лучше воспользоваться методом create() или же insert().