I forgot something:
When restoring from a archive, it's not _removed_ from the archive itself. So when a user gets its file back, it's editable, but the original version still exists in the archive from the time the archive job was run. Next time you run the same archive job, the new version of the file will be archived as well (if the policy/rules apply to that file).
Restoring archived data really comes down to the point in time view you want to create ....