At BlockExplorer I can see that (edit: some) generation transactions use a pubkey in the script (
<key> OP_CHECKSIG), while ordinary transactions use address/hash (
OP_DUP OP_HASH160 <hash> 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".