What you're doing is interesting... I'm not sure how much real-world use this information will have, other than convincing people to switch pools?
I guess there are multiple reasons why a miner/pool would have a different selection of transactions:
- Because they have a different mempool (like you said, you receive new transactions while their block was already solved, it just didn't reach you yet), but also because they could have different settings at to which transactions to reject, different settings for pruning, different settings for mempool size,... or they could have been running far longer than you have and have historic transactions in their mempool... Maybe they even have "private" transactions in their mempool (it happens that they receive a non-standard tx from somebody directly)
- Because they change tx priority... Because somebody asked them nicely, payed them, or because it's their own transaction... Maybe even just for fun
- Because they mined an empty block, they just weren't ready with building the transaction selection, building the merkle tree and building the block header... So they started out with an empty block while building the "real" one, but solved the empty one instead... Or maybe it was a protest, or they weren't interested in the block rewards

- Because they modified the algorithm of tx selection...