Los diferentes resultados se deben a que el circuito del controlador es diferente para cada tecnología.
100kHz I2C generalmente usa una resistencia pullup para poner la señal en un nivel alto y controladores de drenaje abierto para poner la señal en un nivel bajo.
Las resistencias pullup son típicamente varios kilo-ohmios. Cuanto más tiempo tenga un cable, más capacitancia tendrá. El tiempo que le toma a la línea pasar de 0 a 1 será proporcional a la capacitancia total en la línea y al valor de la resistencia pullup. En algún lugar en el rango de aproximadamente T = 2 * R * C sería aproximadamente correcto.
Por ejemplo, si tenía un cable de 10 pies que tenía 20pF por pie de capacitancia y usaba una resistencia pullup de 10K, entonces tomaría T = 2 * 20pF / ft * 10 ft * 10K = 3.6us para pasar de bajo a alto.
En este caso, obviamente, no podría tener ningún bit después de un bit cero que tuviera menos de 3.6us de ancho, por lo que su velocidad de transmisión se limitaría a 277kHz.
En un sistema I2C real, la especificación I2C exige aún más la configuración y los tiempos de espera alrededor de las transiciones de datos y reloj. Esos tiempos son cientos de nanosegundos o microsegundos. El tiempo se hizo muy lento a propósito para que los dispositivos pudieran implementarse a bajo costo (centavos) y consumir muy poca energía (milivatios).
Ethernet, por otro lado, puede funcionar más rápido a pesar de la capacitancia del cable porque no usa una resistencia pullup. Conduce activamente ya sea alto o bajo en el cable. El controlador es de baja impedancia y puede cargar cualquier capacitancia de línea muy rápidamente. Por supuesto que todo tiene un precio. Ethernet generalmente consume cientos de mW de potencia y su implementación cuesta al menos unos pocos dólares por puerto.
Si una configuración similar a I2C se ejecuta más rápido, solo cambie el pullup de 10K a 100 ohmios y ahora su tiempo de subida a 10 pies de cable cae de 3.6us a 36ns. Entonces, probablemente podría correr a alrededor de 10MHz sin demasiados problemas (aparte del hecho de que los chips I2C normales no pueden hablar tan rápido).