The 80 byte block header consists of 6 items:
- Version
- The double SHA256 hash value of the previous block
- The Merkle root built from the list of transactions in the block
- A timestamp
- The current block difficulty
- The nonce
It's these 80 bytes that you are hashing when "mining". The version, hash of the previous block, and current difficulty can't be changed without the block becoming invalid. The nonce is the easy thing for the miner to change as they search for a block solution. So, the two things the pool server can change to give you a new block is the timestamp and the Merkle root.
The Merkle root changes if you change ANYTHING about the transactions in the block. Add 1 more transaction to the block, and a new Merkle root needs to be calculated (which will be different than the one you had). Remove 1 transaction from the block, and a new Merkle root needs to be calculated (which will be different than the one you had). Change the order of the transactions in the block, and a new Merkle root needs to be calculated (which will be different than the one you had). Change the input value (also known as the extraNonce) in the coinbase transaction, and a new Merkle root needs to be calculated (which will be different than the one you had).
The point is that the main difference in the new block header that you receive from the pool is typically going to be the Merkle root.