где их использование оправданно?
Руководствуйтесь здравым смыслом. В целом есть такая практика, когда вообще все оборачивается в объекты, особенно айдишники сущностей. Но это оверхэд в подавляющем большинстве случаев. Делают это что бы различать айдишки разных сущностей, к примеру. Типа CategoryId и ArticleId, и если для вас нет в этом профита - для айдишек можно юзать просто скаляры.
Бизнес объекты же лучше описать объектом, таким образом мы будем знать структуру объекта, можем трекать тип объекта и т.д. Это понижает вероятность ошибок.
В целом же в PHP можно удобно использовать только ОО подходы (при построении архитектуры приложений, это не значит что мы не можем применять идеи функционального программирования, и не путаем это с процедурным подходом), потому все сводится к простым штукам типа инкапсуляции, полиморфизму, принципам SOLID и GRASP. По умолчанию все должно быть объектами и все должно иметь свой тип. Далее уже можно упрощать в зависимости от требований.