You don't need to be able to change code to execute arbitrary code --- see return-oriented programming. Besides, NX gives you almost all the same benefits.
Restrictions on code execution strike me more as business controls (and yes, assaults on freedom) than real security measures.