EmEEProm is a fine thing, although the amount of flash is limited. Your project code and emeeprom have to share the amount of flash availlable. Rule of thumb is to use the flash from top downto the end of code area. Tere are a handful of #defines which declare the width of a flash row (smallest item to program) to the number of rows your PSoC offers. Seems to be a bit difficult to add a bootloader when using emeeprom. Pitfall might be a power loss while programming is done. Might result in a non-functioning chip that needs re-programming.
You may think about an external memory as FRam or EEProm.