Типовые причины
Когда это решение действительно оправдано
- нужен root-доступ
- проект разворачивается через Docker
- есть API, очереди, cron-задачи, фоновые воркеры
- нужны нетиповые версии пакетов и собственная конфигурация
- shared-хостинг уже не укладывается в требования проекта