Why enforce minimums in code? Shouldn't this be a setting of some sort? The software can recommend a fee based on the rules, but if you choose not to include it, then your transaction will just take a very long time (or never) to confirm.
It is a denial of service prevention mechanism. You can however compile your own client and avoid this check. However most likely all your peers will simply drop the tx as not having the min fee for low priority txs.
Just to be clear there is only a min fee on low priority txs and it is done to prevent someone from spamming the network at no cost, crashing nodes, filling the memory pool, and (although this is less of an issue now) filling blocks with worthless spam and massively bloating the blockchain to kill future adoption (imagine today having to download a 20 TB blockchain).
The min mandatory fee to relay on low priority txs is simply a defense mechanism it wasn't intended to be a revenue generator. Miners are free to set their own fee requirements potentially higher than the min mandatory fee on both high and low priority txs.