empty blocks can occur few a few reasons.
Rapid fire hitting of blocks and an empty or close to empty memory pool is always a
possibility for an empty block.
Or some pools shoot for a short cut prebuilt header which creates a small head start.
second case possibility.
I am sure there are other ways someone may explain other reasons.
The first one do one can do anything about and will happen at times.
the second one is a bet that a pool makes ie
a block of 3.125 + 0 every 59 minutes
is better than a block of 3.125+0.05 =3.175 coins every 60 minutes
those numbers are approximate but this is what antpool tries to do .
And they certainly do hit more blocks with the shortcut they take
and they certainly get less fees with the short cut they take.
It would take a ton of math to figure if what they do pays off.
as I do not know how much time they save and how much faster they make blocks.
I estimated 1 block every 59 minutes vs 1 block every 60 minutes
but maybe the number is 1 block every 32 minutes =0.533 hours short cut
vs 1 block every 32 minutes and 30 seconds =no short cut
it would be very challenging to figure out if they make more money their way.
I can tell you this method is likely to work better with larger pools than pools with very little hash. but I do not know how much speed they gain.