Unless, of course, you unlink its executable file, in which case it allocates swap to hold the file first.
Why doesn't it just take into account the fact that the file is in execution in its reference count and leave the file where it is on the file system until it terminates? "unlink" only decrements the reference count, it does not free the file. Seems much simpler to me.
In addition, if it does as you say, FreeBSD does not just need to allocate the swap to hold the file, it actually needs to take every page from the executable file that has not yet been loaded in memory and actually copy it to the swap. Where's the coolness in that?
By the way, I didn't find the paragraph which lead you to that that's how it does in there.