The thing is, it seems that the built in support for additional memory was limited only to the two banks and thus going beyond 128KB was not really in the design.
Jup. It was on purpose intended to not have any banks beyond 128k.
How did programs access the banks beyond the 128KB limit?
No banks, no access mechanism needed. Third party memory cards used different schemes - like emulating language cards (as on the II+), or switching 2 KiB blocks into the I/O ROM area.
While cards based on emulating multiple language cards can still be used as main memory, block based are purely usable as I/O devices not much different from floppies or hard disks. Code to be executed had to be moved from those into main memory.
The very extreme are cards that provide their storage via a single byte wide port, most notably the so called 'Slinky Cards'. The provide three registers to set a 24 bit address and a single byte wide port to read or wirte a byte from or to that address within the devices memory.
The most well known are Apples Memory Expansion Cards, the A2B4156 for the IIc and A2B2086 for the Apple II and IIe. While marketed as memory expansion, they do not expand mein memory in any way but offer a RAM based storage drive - which in turn is recognized by ProDOS' SmartPort drivers right away.
When Apple realized that the Apple III wasn't the instant success as expected, the LCA (Low Cost Apple) project, on hold for some time, was (re)started. They still believed that the III would take off eventually, so the major goal was a cost-reduced Apple II design that could extend the profitability for a year or two even though sales prices were expected to drop. While the LCA should have 64KiB (to reduce chip cost) and maybe 80 column display (which was originally a reserved feature for the professional III), its memory capabilities should stay for sure below what the Apple III offered - which started originally at 128 KiB (III+ started at 256 KiB) and was expandable to 512 KiB.
When Walt Broedner, the main designer for the LCA, came up with the idea for using a 1k RAM and bank switching to implement the 80 column display, he also realized that this was a way to expand the II series to 128 KiB without adding any cost, as the few needed gates would slip into the custom MMU (one of the two custom ASICs of the LCA, the other being the IOU) anyway. Management let them go thru as this solution wasn't in any way extendable beyond 128 KiB, thus keeping the Apple III's superiority.
At that time many third party companies offered RAM cards to expand way beyond 128k, by extending the language card logic (Saturn most prominent). This design allowed next to infinite memory (ok, in reality anything beyond 2 MiB would have needed an extended approach), and an implementation as part of the LCA wouldn't have been a big deal, but not in line with what Apple envisioned at that time.
Edit: As usual when it comes to Apple II development, Steven Weyhrich's Apple II History provides a great read, even with a Woz citation describing the mindset that lead to this rather limited bank switching scheme.
Don't get me wrong, being able to switch a large chunk of memory in at once was handy for an overlay-like program structure, but the huge bank size killed any other effect. And for data, more but smaller chunks would have been favourable.