Because the unmodified software doesn't know what the NOP is intended to do, however, it won't relay such a script (nor would an unmodified miner mine it). This is because the unmodified software knows enough to know it can't be sure if the script is valid or not.
If no miner will mine a transaction that has a NOP code, then the NOP is effectively illegal. I.e., those lines in the miner's software that say to reject such transactions are effectively part of the validity rules.
Which means that making those opcodes legal is a relaxation of the existing rules, and therefore not a soft-fork type of change.
(there is a clear difference between relaying, mining and validating)
Each player can validate as much as he wants, by any rules that he wants. However, if he wants to use "the" bitcoin that "everybody" uses, he had better use rules that are compatible with them, in the sense that he must trust the same blockchain that they trust. As long as "everybody" prefers to trust the chain with the 1500 PH/s, "everybody" had better accept as valid whatever chain is created by the miners with the majority of that hashpower.
Likewise, each miner in theory can adopt any validity criteria that he likes. He can change them at any time, apply them if and when he wants, and build his blocks any way he wants. But, as long as he wants to earn bitcoins that he can sell, he must make blocks that end up included in some blockchain that enough potential buyers will trust. There is no algorithm for that: he must watch the "market" and try to guess how the humans will behave.
My point is that external observers cannot tell which validity rules a miner is using, nor when or whether he applies them. All they can see are the blocks that he broadcasts. In particular, there is no way to tell whether a miner is not accepting transactions with NOPs because NOPs are invalid in his version of the validiy rules, or because he is afraid that someone else may consider them invalid, or because he thinks that they bring bad luck.
As for the non-mining relay nodes, they are aberrations that have no place in the protocol and break all its (already weak) security guarantees. Thhey should not exist, and clients shoud not use them.