When you are generating blocks, you use the pool's public key; it is not possible to insert your own key in your 'winning' block.
This is a valid point. If you are hoarding the hashes that can result in a generated coin, they do you no good if you are using the public key intended for the network as a whole. Hoarding them only makes those hashes useless or you add that coin to the chain where the resulting coins are automatically presumed to be "owned" by the pool.
This still is a bit of a centralization effort, however, where whomever is administering the pool (and presumably holding the "private" part of the key) that can potentially cheat their users by collecting the "winning hashes" and keeping the coins for themselves, or skew the payoffs to the network members so they keep a larger amount for themselves. It moves the whole issue to setting up a trust relationship with the pool administrator and the "fairness" in terms of how payments are being made.
Even here, however, an audit trail can be made if the pool "proof of work" hashes are shared within the pool and available to all of the members of the pool... essentially an independent proof of work chain that is distributed within the network. This should include "successful" hashes that also become generated coins.
Could it be possible in this sort of situation where a collective pool chain is created where a successful coin generation is distributed to all contributors to the pool by each pool participant individually (based on the pool rules), or would this have to be done by a central administrator? Anything that could distribute the effort and decentralize this feature would be beneficial given the nature of this project.
I really like the idea, although it does need some extra work.