The main difference between flash and EEPROM is the number of times you can write to it. Flash may fail after only 1000 writes, EEPROM is guaranteed for 10,000 writes but will typically last 1,000,000 writes.
EEPROM should be used to store things that may change infrequently such as customer preferences.
Flash should contain data that changes very infrequently such as the program code (changed when a bug is fixed or the code updated). You can also use flash to store data. For example, a musical doorbell may have the code and a tune programmed when it is manufactured but different tunes could be made available via the internet that could be flashed into the memory via RS232.
Mike.