I don't think masking addresses would be that expensive, but the problem is that WASM doesn't allow illegal memory accesses to just wrap around. Runtimes have to detect them and throw an exception, which means they need to branch every time they touch the heap.
To operate on any other size, you need to insert extra instructions to mask addresses to the desired size before they are used.