I would think it the other way around: there's no reason to make it non-private or non-static.

Making it non static means that every instance of the class will have a different copy of the VALID_THEMES array which doesn't make sense. This is a class level logic, not instance level.

Making it non private could hurt. If someone else uses this class member in a child class then he will be tied to your implementation of the protected member. You loose the ability to change the implementation without affecting the childs of this class. Correct me if i'm wrong but you don't have any inherited class yet, so why do you need it to be protected ? If later you found that you need access to that property from a child class, you just change it to protected without harm, but this doesn't work the opposite way.