Theoretically miner could perform double attack with less than 51% hashrate. It's just that 51% hashrate ensure 100% success, while less than that have lower chance depending on hashrate percentage and how many confirmation needed requested by receiver. You can use tool such as https://jlopp.github.io/bitcoin-confirmation-risk-calculator/ to perform such chance.
Your answer is good, moving people away from a suspected mining pool controlled by tricky operators can help reduce such threat by diminishing the hashrate of the pool, yet it's written that if it's been done carefully they'll go unnoticed. So, I'm wondering if no method exist that can bench or stop for-profit attackers even though a mining pool does that secretly. Or its centralized nature keeps the for-profit attack operators immune from sanction or restriction?
As @kano said, double spend by rollback/overwrite few blocks would be noticed. In addition mempool.space have block health feature[1] which compare expected block (based on TX with highest fee rate) and actual block. With such feature, it's very easy to find miner/pool which intentionally exclude certain transaction. They also show average health of all blocks which mined by pool[3] which currently shows almost all pool have >99% health. IMO it's not something to worry about since potential damage (while doing it stealthily) is rather small.
[1] https://mempool.space/docs/faq#what-is-block-health
[2] https://mempool.space/graphs/mining/pools