Sadly this is one of those cases where it can be easy to get it wrong. It does seem worth investigating whether there was any breakage or behavior changes since 0.3.x days. We have changed CBlock to CBlockHeader and it is entirely conceivable that one might have output the "number of transactions" variable, and another did not. Worth checking.
This may be the case.
Untested thesis, based on code read: "headers" message format changed when
https://github.com/bitcoin/bitcoin/pull/2013 was merged in Nov 2012.
You may have uncovered a protocol-related bitcoind bug.Update: Incorrect. I was misreading some code.
Thanks for checking into this! Was I correct to update the block headers table on the wiki to indicate that the value is a var_int that is always 0?