Yes.
But the Bitcoin documentation is giving directions (implemented in version 0.8.2) of how to include transactions in a block.
https://en.bitcoin.it/wiki/Transaction_fees#Including_in_BlocksI think most of the miners will stick to this, and minimizes the chance that somebody is blacklisted and cannot make any payments ever. It does not mean that individual miners cannot choose how to include transactions. They can even choose to mine only empty blocks, which is more resource efficient from the perspective of the miner. But the other miners must also check and agree with the found block, thus it's not entirely up to the one who mined it. I think this gives enough counterweight to balance this problem. The 'HAVE' you are talking about is just not possible, because everyone can code its own miner.
A decentralized system can give you a headache sometimes.