What could be causing this GFCI trip upon fan turn off?
Assumptions

There does not have to be any leakage to ground for a GFCI to trip.  There just has to be an unbalanced current detected.  

A GFCI is like a balanced CM choke that reverse the polarity of one winding to use the differential current for activate a latching relay. 

If the energy of the difference is enough to trip the breaker, it will.  But normally  the bandwidth of any transformer and CM chokes included cannot span much more than a few decades of frequency and the transient arc of a switched inductive load (fan) may span many more decades.  So I think the mathematical problem is how much energy is imbalanced in the windings over the whole bandwidth not just at the line frequency.  THe technical problem is the sensor is design for line frequency and the input here is an impulse. 

The solution may be a 1 nF plastic cap ( rated for Vac) across the switch.  Then the problem may be during switch on.  So try an RC snubber across the switch resistor to limit the bandwidth to 1KHz for fBW~ 0.5 L/R or ~ 0.5 RC using 1nF.

To test for the problem , use the largest inductive load. ( transformer, solenoid, motor etc) THe probability to switch off during peak current is increased with the number of trials.  20 ought to be enough if marginal, 5 or less if significant. It must be stored energy not resistive.

Normally it is done by creating an inbalance of 100uA one line or the other of the GFCI CM Choke at line frequency which translates into 12mW * x ms? which will be less energy than the 1/2LI^2 of the inductive load being switched off. It will take much more energy to cause some of the spectrum to be imbalanced from mismatched windings as a function of geometry , stray capacitance and frequency.