Bueno pero en este caso es un dispositivo programado... que ofrece la opcion de pasar la direccion, por que puede tener varias direcciones, para distintas partes (dentro del mismo micro) o por otros motivos.
The SSPxADD register (Register 15-7) contains the Slave mode address. The first byte received after a Start or Restart condition is compared against the value stored in this register. If the byte matches, the value is loaded into the SSPxBUF register and an interrupt is generated. If the value does not match, the module goes Idle and no indication is given to the software that anything happened
Es decir solo las direcciones que coinciden generan una interrupcion y permiten la llegada de datos. En este caso no tiene sentido que pase la direccion, y es el funcionamiento de tu dispositivo (sensor, rtc, etc).
PERO...
Ademas tenes una mascara.
An SSPx Mask (SSPxMSK) register (Register 15-6) is available in I2C Slave mode as a mask for the value held in the SSPxSR register during an address comparison operation. A zero (‘0’) bit in the SSPxMSK register has the effect of making the corresponding bit of the received address a “don’t care”.
Donde podes crear un cierto "rango" de direcciones, en los cuales podes recibir tus datos, o por ejemplo si quisieras analizar todo el trafico de I2C y enviarlo por UART a una PC.
O tener la direccion con terminacion 1 para una cosa, y la terminacion 2 para otra.
Es necesario tener el valor de la direccion para saber a que se dirige y por lo tanto necesitas si o si el valor de la dirección.
Sino estarías acotando el funcionamiento del I2C. Y como todo, aumenta la complejidad del modulo (entenderle, usarlo, crearlo) pero permite mas cosas.
Por lo que no lo veo como algo "malo", lo malo fue que no lei el datasheet antes

jeje y asumi igual que vos que la direccion no pasaba.