The benefit is the coinbase reward.
Regardless of the number of transactions in a block, a well formed block will always result in the miner earning the coinbase reward. The transaction fees are simply a cherry on top.
Once a new block is found, good miners will immediately switch to mining the next block - for maximum efficiency, you might go ahead and do this even before you've finished fully verifying the previous block.
If you have not yet finished verifying the previous block, you don't know the current state of the utxo dataset. This means you cannot select a list of transactions to include in your new block.
Even after verification is done, most mining pools will require an additional process to update a secondary utxo index that also holds transaction priority data - these pools are used by miners to prioritize otherwise uneconomical transactions, such as low fee transactions paying mining rewards for their pool members.
This whole process of verifying a block, updating their internal systems with a new utxo set, and then building a list of transactions and their merkle tree for their new block can take a few milliseconds (possibly even a few seconds).
There's no point sitting around twiddling your thumbs for that time - miners start mining a block template containing just the coinbase reward while all the above steps are completed. Occasionally, they get really lucky and find a valid block. Since they earn the full coinbase reward, it makes sense to broadcast it, rather than throw it away and attempt to mine another block at the same height containing transactions.