If a pool gets a lot of invalid blocks (say, the coding causes the pool to tell other bitcoin nodes about a found block only after a 120s delay, or it is connected to the network in a bad way) but doesn't pay for them, that's also less efficient.
I don't know a pool where this is a problem though, so..