No se si te habrás dado cuenta de que a nivel de programación si son iguales (con esto me refiero a lo de enviar un byte y esperar ACK, o recibir un byte y mandar o no ACK) pero sin embargo si existe una diferencia entre la memoria 24LC16 y sus hermanas mayores; mientras que la 24LC16 solo necesita un byte (8 bits) para direccionarla, las de mayor tamaño necesitas 2 bytes (16 bits, divididos en la parte baja y la alta) para direccionarlas.
A lo mejor ahí es donde está tu fallo.
Salu2, Ank.