As usual with Bitcoin, it's important to think about each party's incentives.
Miners earn a fixed reward for each block they find, but they also get additional rewards based on the transaction fees in that block. Each block takes a lot of work to find, and has a limited maximum size. If a miner is working on constructing a potential new block, it can improve its expected outcome by looking for as many transactions as possible to fill it with -- either to fill space that was previously unused, or to replace transactions with others that have higher fees.
You might be tempted to conclude that it's also in a miner's interest to keep juicy, high-value transactions to itself, instead of broadcasting them. After all, if you can reduce the expected rewards that other miners earn, you make them less willing to compete for blocks, and therefore increase your own average share.
But users also have an interest in having their transactions incorporated into the blockchain as quickly as reasonably possible. If a miner can't be relied on to relay transactions to the entire network, those transactions will not be reliably executed, and users won't want to send them to that miner in the first place.
In a sense, individual miners are free to do whatever they want. But participating in the mempool synchronization protocol is much more lucrative than not doing so.