I2C delay needed and c18
In I2C, the clock only toggles as necessary to transmit or receive data. There's no need for a continuous clock signal so variation in the observed frequency should be expected. The 100kHz specification is the maximum clock rate rather than the average or continuous clock rate.

Non-volatile memories like Flash and EEPROM need a relatively long period of time to write data into the memory, and 5ms sounds about right. You must not try to execute multiple write operations without allowing for this delay between them. Because of this, you cannot possibly execute more than 200 write operations per second and still allow 5ms per operation.

Once you have everything working correctly, you should expect to see a burst of 100kHz clock pulses every 5ms or so.