Если статус не является одним из них - выбрасываем исключение. Так же было бы удобно в самом статусе создавать объект через методы фабрики: Status::active(), Status::publish().
Такой тип с перечислением необходимых значений называетсяEnum, Enum можно считать VO
Абстрактный функционал вашего псевдотипа, понятное дело, не будет финальным, но конкретные VO конечно делайте
final и будет все хорошо.
Единственное сложные VO трудновато будет тестировать с final модификатором, вам поможет например
uopz расширение.
Для статусов/ролей/id делать VO — круто и хорошо, делать final — тоже
В догонку статья от Ocramius:
When to declare classes final