Я понимаю это как то, что мы не создаем универсальный сервис или универсальный компонент, для действий с разной логикой мы создаем разные сервисы и разные компоненты.
В случае с гардом не все так однозначно. Если на выходе мы хотим иметь пустить или не пустить на страницу, можно объединить 4в1, но тестировать станет сложнее. А также переиспользовать. Скорее всего, это будет гард, существующий для одного конкретного кейса.
Но иногда логика бывает сложнее, чем просто не пустить на страницу- нужно дать понять человеку, что произошло в зависимости от разных условий, и вот тут-то удобнее разнести логику по разным гардам.
К тому же, гард, выполняющий одну проверку, может переиспользоваться с бо́льшей вероятностью в проекте, чем мега-сложный-гард с сложной логикой.