Seems more in line with DRY and although I've been looking for a reason not to do it I've not been able to find it.
Also an assignment with no apparent effect (nVersion = this->nVersion) in CBlockHeader's IMPLEMENT_SERIALIZE is removed.
Note that if CBlockIndex's default constructor used sets CBlockHeader::CURRENT_VERSION as default value for its nVersion instead of 0, I could remove two more lines. If you know a reason why I cannot make that change, I will use your explanation to replace my TODO comment.