Why do some generation transactions use pubkey, instead of hash? At BlockExplorer I can see that (edit: some) generation transactions use a pubkey in the script (&lt;key&gt; OP_CHECKSIG), while ordinary transactions use address/hash (OP_DUP OP_HASH160 &lt;hash&gt; OP_EQUALVERIFY OP_CHECKSIG). Why don't generation transactions use hash as well?
Pubkey transactions use a little less space in the block chain overall (if no pruning is used), so you might as well use them when you can.

I think that Satoshi's main reasoning was as follows, though:

Satoshi originally expected that most transactions would be pubkey transactions: the sender would contact the recipient directly and retrieve a public key to send funds to (the protocol has commands for getting this info from recipients, but it's almost never used nowadays). Bitcoin addresses were just a "hack" useful for sending BTC to offline recipients. You know your own public key for use in generation transactions, so addresses aren't necessary and Satoshi avoided using the "hack".