Наследование используется для инкапсуляции проверки isAdmin
. Грубо говоря, все if-ы, выполняющие проверку, превращаются в записи VMT (или что там в PHP).
Архитектура может зависеть от количества ролей. Одно дело -- проверять только на админа, и другое -- на кучу разных ролей. Код с кучей switch -- фактически эмуляция VMT, лучше разрешить эту задачу архитектурно, воспользовашись ООП.
Аргументом против ООП может быть еще и характер кода. К примеру, в большинстве методов действия админа являются дополнением к действиям простого пользователя, и тогда if-ы смотрятся не так убого. Хотя, если дополнительного кода много, и отличия админской роли хочется видеть в виде логически единой реализации, а не набором разрозненных дополнений, лучше воспользоваться ООП.