Hast Du denn den Programmspeicher irgendwann nochmal geflasht, nachdem Du die Daten ins EEPROM geschrieben hast? Wenn ja, könnte Dein Problem damit zu tun haben: Viele Programmer (bzw. deren Softwares) sind nämlich so konfiguriert, dass sie vor dem Flashen einen "Chip Erase"-Befehl senden, um den Controller erstmal "plattzumachen", bevor die neue Datei in den Programmspeicher gebrannt wird.

Wenn das Fusebit EESAVE nicht gesetzt ist (und das ist beim Mega8 der Auslieferungszustand), betrifft dieses Löschen auch den EEPROM-Speicher. Verhindern kann man das durch setzen des EESAVE-Fusebits ("preserve EEPROM through the Chip Erase cycle") - dann wird das EEPROM beim Flashen nicht mehr gelöscht. Diese Einstellung ist eigentlich unerlässlich, wenn man Daten im EEPROM hat, aber noch ein wenig mit dem eigentlichen Programm hin- und herexperimentiert...