It seems like miners would have an incentive not to propagate transactions that came their way. Not propagating would both save them a bit of network use and make it more likely that they would claim the fees from those transactions. Am I missing something, or is it just that a sufficient number of miners are charitable?
It's true, there is a bit of a Tragedy of the Commons going on here. All miners want transaction to be propagated to them so they can include them and get the fees, but why would they expend their own bandwidth to help others hear about those transactions?
Fortunately, though, miners are not the only ones on the network. There are currently almost 6,000 reachable full nodes on the network, and a small subset of these are actually miners. So, even if all the miners stopped propagating transactions (they still have to propagate their solved blocks to get paid), information would still spread fairly quickly throughout the network.
If you mine a transaction into your block that isn't widely known by the network, your block will take slightly longer to propagate. One very simple way of encouraging a transaction to be widely known is to relay it to your peers.
Of course, the actual reason is that it's the default in Bitcoin-Qt, and we're talking about pennies of bandwidth. If, by default, miners didn't propagate transactions, I think very few people would bother to change that.