Por fin he averiguado lo que ocurría.
La verdad es que es una trampa que incluye la datasheet y me ha costado darme cuenta.
Literalmente dice que la dirección I2C del dispositivo es:
MMA7660FC has a 7-bit long slave address, shown in Figure 11. The bit following the 7-bit slave address (bit eight) is the
R/W bit, which is low for a write command and high for a read command. The device has a factory set I²C slave address which
is normally 1001100 (0x4C). Contact the factory to request a different I²C slave address, which is available in the range 0001000
to 1110111 (0x08 to 0xEF), by metal mask option.Por lo que yo lo he estado intentando todo el tiempo con 0x4C.
Pero luego hay un gráfico como este:

donde se ve claramente que la dirección correcta es
0x98.
Realmente el problema es la manera de interpretar los 7 bits de la dirección I2C; mientras que yo hasta ahora siempre los había interpretado justificado a la izquierda (como en todos los datasheets que he visto hasta ahora), Freescale los interpreta justificados a la derecha.
En fin, con 0x98 ya leo los registros y mide correctamente la aceleración.