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