The Altair 8800 typically, at least in the early years after its release in 1975, operated with no more than a few kilobytes of memory, for the excellent and sufficient reasons that memory was expensive in those days and it was initially marketed to hobbyists.
That having been said, there are workloads for which RAM is the main limiting factor. Let's say it's, oh, say, 1978, and you have a workload that needs half a megabyte of RAM. You could buy a VAX 11/780 (released the previous year), which comes with a six digit price tag. Or you could maybe fit 32 16kbit RAM chips on a card, stuff eight such 64K cards into an Altair for half a megabyte of total RAM; this would still be expensive by hobbyist standards, but it would be an awful lot cheaper than that VAX. (The CPU would be slower, but for some workloads, that's not the main limiting factor.)
Wait another few years and 64kbit RAM chips become affordable, so the above arithmetic would stuff two megabytes into the box.
(Writing the software that can make full use of two megabytes of RAM from a Z80 would of course be another challenge altogether! But right now I'm focused on the hardware.)
The 8080/Z80, like other 8-bit CPUs, only have sixteen address lines, but the S-100 bus has twenty-four address lines, so the box can address sixteen megabytes, but the CPU can only address 64K at a time, which means bank switching.
The bank switching logic could be on the memory cards? Maybe the simplest scheme would be something along the lines of, switch in 16K chunks, each card has four bits of state determining whether each of its 16K quarters is currently active in that quarter of the 64K address space?
Or maybe you could do better by inventing some kind of MMU that would translate 16-bit CPU addresses into 24-bit box addresses? The Tandy CoCo 3 had something like that, that could map any 8K chunk of CPU address space to any chunk of RAM.
Did anyone ever put that much memory in an Altair, IMSAI or other 8080/Z80 S-100 bus machine?