The biggest supposed advantage of x32 is the reduction of cache problems thanks to smaller pointers. This advantage is relevant in code that deals with many pointers, for example languages that create many objects in the heap.
My question is: wouldn't it be better to modify such pointer-heavy code to work with base pointers + offsets or other similar schemes? With such modifications one could achieve better performance both on 64-bit and 32-bit pointers (let's use 16-bit offsets and save another 50% of cache lines). The JVM already does something similar . Other VMs use similar tricks to avoid pointer dereferences for basic types such as integers, strings or booleans.
In general, if you manage many data structures of type X, wouldn't you optimise your code to make X more efficient? In this case X == pointers to objects you manage.