Why empty blocks are sometines mined, from mempool.space: "When a new block is found, mining pools send miners a block template with no transactions so they can start searching for the next block as soon as possible. They send a block template full of transactions right afterward, but a full block template is a bigger data transfer and takes slightly longer to reach miners.
In this intervening time, which is usually no more than 1-2 seconds, miners sometimes get lucky and find a new block using the empty block template."
Alternatively, could a pool paricipant be set to use a list of older waiting mempool transactions, which they may already have and thus would not have to wait the propagation delay? Ocassionaly it would clear older transactions and collect more fees than an empty block.