I agree that's what *should* happen.  But it's not.  All records in the zone are having their change_date updated regardless of whether they were changed or not.
That's why I had to add the 'unset' statements; so that my array comparison ignored that field.