Using getwork, you are correct.

I did some more reading. Using getblocktemplate gives the miner a lot more information, so they know what they're mining. https://en.bitcoin.it/wiki/Getblocktemplate

Luke Jr's pool supports it, but it's obviously not required.

I think effectively people fall into the three camps you mentioned: Those who don't need to reduce variance, those who reduce variance and don't care how it's done, and those who need reduced variance but also want a decentralized network.

Probably out of scope for this short section.