In our current process documents are marked with their state, eg Draft
or Approved.

I think it is a bad idea to modify the documents at approval (the
approval should not change the thing it approves).

I was thinking of adding a property for this, eg ApprovedBy.

But. As soon as someone updates an approved document it should revert
to being a draft.
Forbidding modification of approved documents in the pre-commit hook
will only partly solve the problem, because it would force the updater
to remove the property for the approved version. I just want to remove
it for the new version.

Removing the property in the post-commit hook is tempting, but
considered not ok since it would make the committed version different
from the working copy.