Pointer tagging is at least as old as Lisp: https://www.snellman.net/blog/archive/2017-09-04-lisp-number...
Pointer tagging has been around for a while in the Java / JVM context. It lets you add information for bookkeeping when doing GC operations. There might be some usages elsewhere (unboxed vs boxed values, etc).
I wonder whether you could use the MMU to ignore these upper bits, by mapping each combination of bits to the same address as with them clear.