В моем проекте АТМега тоже сама себя прошивала по командам. И пару раз при включении питания происходило самопроизвольное изменение программы. Когда разобрался оказалось, что если в фьюзах есть разрешение самопрограммирования, то при подаче недостаточного напряжения питания дешифратор команд может расшифровать совсем не то что ему дают на вход (тк никто не гарантирует его правильную работу при плохом питании). Вот и смотрите что получается - любая команда может трансформироваться в команду на перезапись. Стирается 128байт - похоже в вашей Меге такое колво байт в странице для перезаписи, странно только что в одном и том же месте перезапись происходит, может недостаточно статистики набрали. Кстати для набора статистики советую подать пониженное напряжение на контакты питания и постоянно им дергать - по идее частота самопроизвольных перезаписей должна вырасти. Выход здесь достаточно простой - поставить супервизор.