This mismatch occurs due to issues in the code used, not in the IP itself.
It happens when the C model is configured to perform a forward transform (FFT) and the IP testbench is configured to perform an inverse transform (IFFT) as in the example below:
In IP testbench, s_axis_config_tdata is tied to all-zeros, and s_axis_config_tvalid is tied High.
As a result the IP core will always perform inverse transforms.
However, the C model wrapper has inputs.direction = FFT_DIR_FORWARD; present, forcing the model to always do forward transforms.
Once these are made consistent, the C model behavior will match that of the IP core.