Every miner is working a on different block. While they share some of the same data, there are several parts of a block which are completely up to the miner to decide, and those differences make the blocks different. This also means that they have different hashes so every miner is searching a different part of the SHA256d search space.
Although each of the blocks every miner is working on will share the same height and parent block, they will have different transactions, and may have different block version numbers, and timestamps.
But the most obvious thing is going to be the transactions, which are hashed into the merkle root. Just one transaction being different, or just one transaction in a different position, is going to cause the merkle root to change, which causes the block header to change, which thus makes the hash different. And every miner is going to have at least their coinbase transaction be different from everyone else’s. This is because the coinbase transaction contains the output that pays the miner, so obviously every miner is going to make their coinbase transaction pay themselves, not someone else. From this simple fact, the transactions in the blocks that miners are working on are going to be different in at least the coinbase.
So because miners are all working on different blocks, every nonce that they try is going to result in a block hash that no other miner has seen yet. Thus a small miner could be lucky enough that the block they are trying has a nonce that makes the hash meet the PoW requirement before a larger miner finds such a nonce for their block.