If another block appears at the same height, it should push their own blocks and depending on how much time they've withheld, they would've done a certain amount of work on expanding their own chain rather than the rest.
That plurality is the problem. The article also says the selfish miner would mine multiple blocks and keep them private. But unless they have >51% of the hashrate, their chain will always be shorter than the actual chain when they keep building on it.
If there's a situation where being dishonest gives a financial gain, I totally expect human greed to take over.
That's true. But will there really be a financial gain? The way I see it, what authors explain is basically a 51% attack (replacing already mined blocks and reversing some transactions). That can crash the price and whatever the selfish miner was hoping to earn would be worth a lot less. Meaning it would act as a disincentive breaking any kind of coalition between malicious miners, effectively lowering their total hashrate therefore making the repetition of the attack impossible.