Even for the 20 BTC fee, I still think the restriction should be done in the client side. The mining node has no reason to forbid people to pay 20BTC fees, and maybe the user just want to ensure the transaction to be included in a block as soon as possible.
The particular miner has no incentive to reject. The other miners have a slight incentive to reject since it helps protected the reputation of the protocol and it's not like they get the fees for that particular transaction.
It could be implemented as a soft fork. Transactions are invalid if the fee is to large by some definition. If more than 75% of the inputs are paid to fees, then the transaction should be rejected.