This is the explanation:
Ghash.io have probably been pointing hashrate at other pools and performing block withholding attacks.
This allows them to collect rewards without submitting actual blocks, thus lowering the average payout per hash on other pools and increasing it on their own.
This is why they appear to have more luck.
Note that technically this isn't even stealing, it's just misrepresenting the total network hashrate.
If you think you have 0.5% of the total network hashrate, you expect to get 0.5% of all bitcoins mined. But as long as you're on BTCGuild, you actually have less than 0.5% of the total, because some of the total is hidden from sight. So you get less than 0.5% of all bitcoins mined and you attribute it to bad luck, although technically it's good luck with a smaller percentage of hashrate than expected.
If you're on Ghash.io, which apparently is the only major pool
not subject to this attack, your hashrate actually
does represent the percentage of the total that it seems to represent, because the hidden hashrate that doesn't produce blocks simply does not apply to you. So you get more per given hashrate.
The sad thing is, there's really nothing to be done about this short of hard forking. The only thing we can do at this point is boycott Ghash.io - and suffer the economic cost of doing so for the good of the network.