My assumption regarding the bus speed was that once all I2C devices were initialized, it would not change. Is it possible/advisable to mix different speed devices on the same bus, and then change the speed on the fly to communicate with different devices? For example, a DS1307 that can only do 100kHz and an EEPROM capable of 400kHz. I would think there is some risk of confusing the slower device while the bus is running at the higher speed, even though it's not being addressed. I wonder if it might try to respond which would then result in garbage on the bus.
I do warn in the ReadMe file to place the extEEPROM.begin() call after all other I2C devices are initialized to ensure the desired bus speed is set. But the worst case scenario is just that the bus runs slower, so I didn't feel a need to do anything more.
While running at 400kHz can be a significant improvement, you're probably aware that it's nowhere near even twice as fast with EEPROMs, due to the small block sizes (Wire library 32 byte limit) and the wait times for writes.
Page write times vary between EEPROM part numbers. Datasheets for EEPROMs I have say 3, 5, and 10ms. So I used the polled method as opposed to hardcoding a delay. Still I didn't want to bombard the device with continuous polls so I poll every 0.5ms. I've also observed that page write times are often better than the datasheet specs (no real surprise there). I suppose I could drop my interval to maybe 100µs. I might run some tests and also try your technique.