When a bitcoin node has the blockchain in sync, most transactions in incoming block messages may have been already received as standalone tx messages before.
With a block message with only transaction hashes, the receiving node could try to reassemble the full block with its unconfirmed transactions and just request the missing transactions to complete the block.
Since this way to save bandwidth looks too obvious, I'm guessing there must a reason to always include the transactions in block messages, even after downloading the blockchain.