So from my understanding, these temp files get created because Unison was interrupted. In other words, the tmp files are the applications previous progress, and the application is checking to see if the tmp files match the source, and the destination files and trying to resolve the mess before it starts transferring files around. You could create quite a mess if temp files get created somewhere (they would be potentially propagated everywhere because they exist in some source...ugh!). Do you know if someone stopped Unison?
I like your idea about killing the temp files before the call to unison happens. This may be your only option at this point (if someone has these temp files on their hard drive now).
I'll give this a think and get back to you.