To work around this issue, set the boot mode to JTAG boot.
If booting in JTAG mode is not possible (for example if a custom board does not have boot mode jumpers), the FSBL used for NAND programming can be modified.
Instead of reading the bootmode from the MIO:
BootModeRegister = Xil_In32(BOOT_MODE_REG);
BootModeRegister &= BOOT_MODES_MASK;
The code can "fake" the boot mode hard-coding JTAG:
BootModeRegister = JTAG_MODE;
This can be modified in the FSBL main.c file, for the FSBL used to program the NAND only (NOT the FSBL that goes into the boot image).
Note: This is not a Silicon issue, but a tool limitation.