I did some exhaustive testing on an EEPROM we use at work. Due to a bug, we accidentally wore out part of an EEPROM, so we decided to investigate further.
After about 2-3 million program cycles (EEPROM rated for 100,000), the part of EEPROM being written to started to show “wear”. The failure mode surprised me, because a write/verify passed. That is, the first read after the write returned correct data. However over subsequent read cycles, any bits programmed to ‘0’ revert to ‘1’, but in an analog way, so that looking at the scope trace I could see intermediate voltage levels. Eventually the data reads back as all '1’s.
These results may depend on the make of EEPROM or technology used, but that’s what I found on that sample (25LC640 type).
We have a CRC on all the data in the EEPROM, so we would detect the error. But if you rely on a write/verify cycle to test for correct programming, then that may be insufficient.
The fact our EEPROM worked ok for over 1 million cycles was reassuring, the 100k minimum is a very conservative value. Microchip have a tool to calculate what sort of error rate to expect from different EEPROMs and usage profile. The maximum error rate at 100k cycles is non-zero, but so small as to not worry about, at least for general commercial applications.