There is no guarantee that depsgraph is ran between two undo steps, so when re-using an existing data-block we should never wipe completly its recalc flags, but instead complement them with new ones from accumulated 'storage' as needed.
source/blender/io