For those who are interested, I found the solution to my problem.
In short, the problem was the second (receiving) port.
I had assumed that the second port (when not used as the source) would absorb all incoming fields, similar to a radiation boundary. It turns out that this is only true for fields which match the modal profile of the port setup - in this case, the port was expecting to receive a uniform TEM wave, but due to the scatterer, the impinging field was not uniform TEM, and so most of the energy was simply reflecting off of the port.
In the TF/SF simulation, there are no ports, so I was using a radiation boundary - which did absorb all incoming fields, as I expected. (Also of interest, but not related - I've learned that radiation boundaries only work in a vacuum - they also reflect when they are placed along a dielectric interface).
This was the source of the large result discrepancy between the two setups.