The way that Metadata Deploy module typically works is that it overwrites all the metadata on every startup.
The advantage is that this was an easy-to-implement way to ensure you end up in the correct state.
One unfortunate side-effect is that it messes up dateChanged from all your metadata (i.e. it always appears updated on the last system startup).
Another problem is that some types of metadata are supposed to be immutable, and re-saving them (even with no changes) throws an exception.
We should explore whether there's a good generic way that MDD can avoid actually calling save() when doing overwrite() doesn't actually modify the object. (I'm afraid this will require a non-backwards-compatible method signature change to the overwrite method to have it return a boolean, or something like that.)