It looks like Xcode recompiles every C/Objective-C source file (including the precompiled header?) after ghc-xcode runs.
In practice this isn't always a problem since Xcode seems to do some of that compiling in the background.
I'm not sure whether this is something triggered just by using custom build phases or by the FFI headers being rewritten each time.