Does selfish mining actually give an advantage in the absence of transaction fees, difficulty changes, and economic effects? I am reading the Cornell selfish mining paper. In it, their main argument is that a selfish miner can increase the ratio of the blocks he mines relative to the honest miners. I do not dispute this. However, to my understanding, merely denying others their blocks does not help you; just because everyone else is getting fewer blocks doesn't mean you're getting more. (That is, everyone mining normally would be expected to get a certain rate, but if you suppress some of those blocks, then the total rate goes down. So denying others their blocks is not zero-sum; just because everyone else's rate goes down does not imply that your rate goes up.)

Here's a simpler explanation of my confusion. Consider this thought experiment. Let's say 2/3 of the miners suddenly quit mining, leaving it all to a miner who has 1/3 of the hashrate. We can all agree that this miner is at least as well off as a miner conducting a selfish miner attack. (The reason for this is very simple: he could just replicate the exact same strategy used by the selfish miner, except that the honest miners now have no chance of finding a block in this thought experiment.) Nonetheless, they can only mine at a rate of 1 block per 30 minutes, at least until the next difficulty readjustment.

So unless you're a sadist who just wants to make everyone else worse off, it seems that selfish mining gives no advantage, unless we consider at least one of these three factors:


Transaction fees. If you mine at the same rate and cause everyone else to mine at a lower rate (because a lot of their blocks get rejected), you are still finding blocks at the same time intervals on average, but since each block takes longer in general to find, it will include more transactions and thus more transaction fees.
Difficulty changes. If the difficulty readjustment occurs as you're performing selfish mining, then of course decreasing everyone else's share of the pie increases yours.
Economic effects. With fewer bitcoins being mined, all else being equal, a decrease in supply causes an increase in price. So the bitcoins you mine are more valuable.


Am I correct in concluding that without these three effects, there is no selfish mining attack? If so, then selfish mining is not a problem in practice, at least for now. Transaction fees are minuscule compared to the block reward, difficulty retargets are infrequent, and the amount mined each day isn't really that significant compared to the total number of coins in circulation.
You're missing the main point: when a selfish miner finds a new block, he keeps it private, does not broadcast it to the network, and starts mining on top of that privately.

The rest of the network is still mining on a block that was actually already found, but not broadcast.

When the rest of the network finally finds this block, the selfish miner broadcasts his version, in an attempt to replace it. 

By invalidating blocks this way a selfish miner is effectively wasting other people's cycles, and has a head start for winning the next block, because he started mining on it before the others.

Edit

Keep in mind that this practice is only successful if you're a large pool with around 25% of hashing power. Major pools of this size are closely watched and scrutinized by the entire community. Finding consecutive blocks in a row, for many times, is a strong indicator that the pool is practicing selfish mining. The community can therefore decide whether to leave the pools who are practicing this behavior.