Why does the ATmega MCU on the Arduino board have both a flash memory and EEPROM?
Flash is cheaper but can only be erased block by block.

EEPROM can be erased byte by byte and has better write endurance but costs more. It's also safer and easier to write and manage things when you aren't writing to the same memory that your program is running from and if it can be erased by byte instead of by block.