Why don't bitcoin nodes invalidate new blockchains that don't contain all the data of the old blockchain?
The problem with this proposal is that it relies on data that is external to the blockchain (namely, data that is in another branch of the chain).
The validity of a block should be a function only of its contents, and the contents of anything the block commits to through hashes. Specifically, that includes all ancestors of the block, as the block header contains the hash of the parent block, and so on. This means that nodes can independently determine validity, without needing assumptions about what data is available to whom.
More concretely, your proposal has the following problem: there is no &quot;initial&quot; chain, and &quot;replacement&quot; chain. Some nodes will see one first, and others will see the other first. This happens normally, when a single-block fork appears due to two blocks at the same height being found approximately simultaneously. It also happens during initial synchronization with the network: a node could be connected to an attacker who provides a rewritten chain first, and only later connects to an honest node that gives the &quot;real&quot; chain.
In both these cases, the rules must be so that eventually all nodes agree on which chain is the real one, or at least the probability for disagreements to remain should decrease over time.
If you require that a replacement chain contains all transactions the original chain has, then nodes who saw &quot;the other&quot; chain first will always reject the real one, as from their perspective, it is the real chain that is trying to replace the chain they already had.
And as forks occur naturally, this would be a disaster: if two blocks are created at the same height, with different transactions (as there cannot be any guarantee that two miners in different geographical locations have identical mempools; this is simply a result of the finite speed of light), nodes that see block A first will reject B as an invalid replacement, and nodes that see block B first will reject A as an invalid replacement. The result would simply mean that any network fork becomes permanent, and the network no longer converges.