WordPress checks wordpress.org to see if there is a new version. When you click "install", it downloads the update (trunk from SVN, the whole plugin) as a zip, removes every file in the directory and replaces it by the extracted files.
What I could do is adding a filter that copies the files, before updating, into another folder and then placing them back. But that can create conflicts. How do I merge different PO's if I have to copy them back and somebody made changes? How do I not overwrite my own update?
I have an idea for the future though. I could create a directory "previous_versions" and copy everything in there and when the installation is done you could copy it back from there. I haven't looked at it to closely, it just an idea that comes to mind.