How do honest mining pools generally divide their rewards?
Mining pools use a system that is based on shares. Shares are blocks with proof of works for a different difficulty than the network difficulty. Mining pools will set the difficulty for a given miner to be something that is reasonable for it to achieve. So when that miner mines, it is looking for a block hash that meets the pool difficulty. Once it does, it submits the block. That submitted block, although likely not valid to the Bitcoin network, meets the pool difficulty and is known as a share.

So mining pools will count the shares and give weight to each share based upon the difficulty that it was mined at. In this way, the mining pool can determine how much work each miner has done on average and pay them accordingly once a block is actually found.

Blocks are found when a share meets both the pool difficulty and the network difficulty.