Consider the case where we have two versions of metadata for foo: 1.0 and 2.0
In version 1.0 we have an array field, bars, that exists on foo. The generated field bars# is updated as we add and remove items from that array.
In version 2.0 we have moved the field bars to an association. So foo and bar are now their own entities, with foo having an association field now to bar.
If we update bar entities, adding and removing them through bar metadata, and then access the foo 1.0 metadata, the bar# field will now be inaccurate, because it was not aware of any changes, since the changes were not executed through foo.