TL;DR: No maximum if you build hardware that multiplexes more than one module into a port.
NTL;R: It depends on the hardware and if you're willing to do some wiring (and probably a little digging into the drivers).
The original Tessel has four module ports and a GPIO bank. One of the rows on the GPIO bank is pin-compatible with the module ports, so the upper limit without any trickery is five.
However, because of how hardware resources are shared across the board as a whole, you cannot use any arbitrary five modules at once. Most I2C modules are, without hardware intervention, limited to two per board. These include the Accelerometer, Climate, and RFID. Servo is also I2C, but it has a workaround.
If you are willing to build a little hardware, then these limits evaporate. There exist a class of ICs called "IO expanders" which are designed to help few pins do the work of many. Note that this would require not only a little custom hardware but would also most likely require that you dig into the JS drivers we wrote for each of the modules to ensure compatibility. Hacks might look something like this. I'd be happy to go into more detail here if need be.
The module ports on Tessel 2 are much, much more powerful than the ones on the original Tessel. In fact, it's more appropriate to think of them as 8-pin arrays of true GPIO (blog post on this coming soon), rather than "a pair of Tessel module ports".
This means that you're free to repurpose part of a port to do something else (read: I don't need SPI, so I'll take a second I2C), which lets you do some mixing and matching in addition to working with modules the old fashioned way. Understanding the various board-level comms protocols (SPI, I2C, and UART) will be very useful here.
...And of course, since Tessel 2 has 2 USB ports, you could always plug in a Tessel to your Tessel 2.