Do you use a "EZ-USB® FX3™ SuperSpeed Explorer Kit" or do you have a custom board?
As you have mentioned that the boot does not happen "sometimes", so I assume that rest of the settings and FX3 I2C configuration are okay. Can you probe the I2C clock and data lines when you see this problem?
If the PMODE set to " I2C, On Failure, USB Boot is Enabled", if so, the device will fall back to USB boot as a bootloader. IF so, the you can program the device with USBFlashProg example in the FX3 SDK. This example has methods to read and write an I2C slave. Please check if you I2C read and write are happening at this moment using vendor command CY_FX_RQT_I2C_EEPROM_WRITE/Read in the setupCB.