No work is distributed between bitcoin clients.
Each client works individually on its own block, its not a shared effort on the same job.
Pooled mining servers like deepbit is a distributed computing network.
Because the pool tells all nodes to work on the same block.
They are all trying to find the 'next' block.
Although the exact contents of each attempted solution is slightly different (every single hash done is slightly different), the effect of what everyone attempts is the same:
They are all trying to confirm outstanding transactions if any are available.
Even at a single pool, the difference you stated is still there.
Everyone is trying to find the 'next' block but with a different nonce value and with different transactions as more become available.
Each getwork may include new transactions for the same block
i.e. each getwork is different as with a similar difference as comparing 2 getworks from 2 different pools at the same time.