I sometimes do mistakes. I press CTRL-R although I still haven't saved metadata in another tag.
One typical example: I have some MP3 tracks, they have ID3v1 & ID3v2.2 tags which I want to convert to APEv2.
My default settings are Read ID3v1, ID3v2, APE - Write APEv2 - Remove ID3v1, ID3v2.
So I have the MP3s loaded up in Mp3Tag but mistakenly press CTRL-R instead of CTRL-S, I immidiately cancel the action, which usually saves the ID3v2 tags and only leaves me with some ID3v1 being deleted as they are removed first and the v2 tags last.
But it also happen that I don't cancel it and then it's too late. The tags are gone.
Now in either case, when I do "Undo Remove tag" the ID3v1/2 tags do not get written back to the mp3s! But when it was APEv2 tags I deleted then they are recovered! 
Is this intended behaviour?
Mp3tag only saves the content of the fields internally, not the original tag. Therefore, when you undo, Mp3tag will rewrite the content it had in memory based on whatever setting you have activated for writing.
Example: Your file has an ID3v2 tag and you only have APEv2 writing activated. When you delete the tag and then undo, Mp3tag will write the old values inside an APEv2 tag.
Ah I understand, but that is not what I would call "undo remove tag".
When I undo the removal of a tag, then it means that the old tag is written back as it was, i.e. not the one(s) I have set in the write settings but the one I have deleted.
The wording is confusing and makes literally no sense.
PS: Actually I constantly come across issues like this: it turns out that I have absolutely no clue how Mp3Tag actually works and what it is doing!
So much of Mp3Tag's multiple-tag handling behaviour is really confusing to me, although I have been using it for years now.
I have the feeling that I'm constantly using the program like Florian has not intended it to be used.