If you have not used I2C before, check out Nick Gammon website for information he recently posted.
http://www.gammon.com.au/forum/?id=10896With the quote above, I do not believe you need that complexity. The I2C bus with MCP can have 8 devices on one SS (select) line. To create another set on the same bus, share the MISO/MOSI/SCK lines, but create another CS (SS) select line for the next set of devices.
Thanks for the mention! I find it helps me to understand things if I document them.
However I think in this case you are confusing SPI with I2C. SPI uses MISO/MOSI/SCK/SS lines, not I2C.
As far as the original question goes, since the expander has 16 ports, and you can multiplex up to 8 of them by jumpering the address-select lines, that gives you 128 ports which is probably enough for all but the most ambitious project. After that, another approach would be to use a second Arduino (this takes some of the processing load off the first one) and connect the two Arduinos together using SPI.
The expander shield looks cool BTW! Where do you get that? (EDIT: Oh, I see from the signature).