The heap length size restrictions are chosen to allow (but certainly not require) page protection tricks to avoid out-of-bounds checks on some platforms. We’re starting to see 64kb page sizes (viz., an option on ARM64), so we might as well switch to that; in practice, virtually all asm.js apps should have much bigger heaps.
Note: if the platform has a page size bigger than the heap, we can still offset the heap inside the page so that the ends line up (although this could potentially inhibit other future optimizations). Thus, with this choice of minimum heap size, we’re just trying to simplify the job of the JS engine by allowing it to avoid handling degenerate cases on all popular current and coming platforms; in a future where a >64kb page-sized platform becomes popular, we can still handle it w/o undue loss of optimization.