When a mining pool pays out to the workers, why does it not just cache the transaction and then pay zero fees on its next successful block? If you had a mining pool that was generating a few blocks per week, then why not just cache all the payout transactions (if the clients were happy to do this) and then just put them in the next successful block it mines - thus saving on transaction costs ?
Sure, you can use your own blocks to send transactions instead of spreading them out on the peer-to-peer network and let anyone include them in their blocks (may require fees).

The upside as you say is that you can save on fees.

The downside is that it can sometimes be a long wait, even for a big pool.

Still could be a good idea to offer these payouts for free, and if you want your coins faster, you have to pay a fee.