How to manufacture I2C devices that can be used in multiples of 256 quantity.
Each I2C device address that a manufacturer uses has to be purchased and registered. In order to have multiples of a certain device (like a motor controller) each one currently has to have its own address.
I suggest that you put an address register as the first piece of data sent to a device and the device looks at that one word sub address before responding. If the board has a dip switch that can set 8 bits of sub address, then you can have 256 devices that use the same I2C address, but they share it in the same way that the I2C devices share the I2C bus using their addresses. Add the function that the communication from the host sends the address followed by sub address, then waits for the response. The slave device sees its I2c address, then waits for the sub-address to match before responding. In this way, the manufacturer only needs to register one I2C address for all their products. The user then assigns unique sub addresses to each unit that will be used together.
Alex Bruski commented
It would also be nice to have all I2C devices have a second I2C connector so they can be daisy chained like the old SCSI devices had. If all manufacturers just adopted this practice, the standard for I2C would evolve to include it.
Two grove connectors and an eight bit DIP switch, and the extra code to check for a sub address would not be that much to add for the ability to use multiples of each board at no additional expense to the manufacturer (having to purchase multiple I2C address registrations).
Alex Bruski commented
Already existing I2C sensors and controllers should still work, they would just respond to all calls to their I2C address regardless of sub address. Host software could sort this out and know that all commands to boards with sub addresses are also going to have their commands acted upon by the device that doesn't support sub addresses. As users, we would have to be aware of this and only use the older I2C (non sub address capable) boards only with other I2C boards that have different I2C addresses.