The system has not attempted to make RENT programs non-writeable. It has only, in certain cases, attempted to make them non-writeable unless key 0.
I do not know about CICS' RENTPGM=PROTECT option, but I'd guess that it does something similar, expanding which cases. But it could go further, conceivably, as the REFRPROT option does. It is fully possible to write reentrant programs that are self-modifying, but it is rarely done (and even rarer done correctly). Many would consider it not much of a hardship to prevent such a case. Peter Relson z/OS Core Technology Design
