The soft-limit is there miners themselves produce smaller blocks; the
soft-limit does not prevent other miners from producing larger blocks.
I wonder if having a "miner" flag would be good for the network.
Clients for general users and merchants would have a less strict rule than the rule for miners. Miners who don't set their miners flag might get orphaned off the chain.
For example, the limits could be setup as follows.
Clients: 20MB
Miners: 4MB
When in "miner mode", the client would reject 4MB blocks and wouldn't build on them. The reference client might even track the miner and the non-miner chain tip.
Miners would refuse to build on 5MB blocks, but merchants and general users would accept them.
This allows the miners to soft fork the limit at some point in the future. If 75% of miners decided to up the limit to 8MB, then all merchants and the general users would accept the new blocks. It could follow the standard soft fork rules.
This is a more general version of the system where miners are allowed to vote on the block size (subject to a higher limit).
A similar system is where clients track all header trees. Your wallet could warn you that there is an invalid tree that has > 75% of the hashing power and you might want to upgrade.