Steve,
This is an exciting project!
I implemented something similar to this and papertrail internally for a django project at the company I work for. One of the biggest benefits was being able to track request meta information along with what was changed. In terms of integration with phoenix, I am wondering if instead of passing in the user, it could be more interesting to pass in the connection object itself so you can also tell what path/IP modified it - but that would specialize the library towards phoenix. Maybe just allow arbitrary metadata.
Would it also make sense instead of having a key to the User, the tracking information linked to the version of the user at that time (this would give you the IP from the coherence library at the time of update) to avoid any relationships outside of the Version table (if you wanted to keep stuff in a separate DB)?