I eventually got past the disk_initialize(SD) call by adding the following line at the start of my main task:
OSA_InstallIntHandler(SDHC_IRQn, MQX_SDHC_IRQHandler);
I had to import fsl_sdhc_irq.c for this to work, which isn't ideal since you generally shouldn't import .c files, but this was the only file in the SDK that had the right IRQ handler.
However, I then encountered another problem. I set the current drive with f_chdrive(SD) and call f_mount(SD), but the current drive would not remain set when I called f_opendir, returning the FR_NOT_ENABLED status. I managed to fix this by changing ff.h so that CurrVol is initialized to 1 (SD) instead of 0 (USB) which is also an ugly hack, but this was the only thing that seemed to work.
If anybody has a more elegant solution, I would love to hear it.