I had never heard of "top byte ignore," but it reminds me of the macOS migration to "32-bit clean" software as the hardware began to support more than the low 24 address lines.
https://en.wikipedia.org/wiki/Classic_Mac_OS_memory_manageme...
The other approach is CompressedOops, where instead of wasting pointer bits (and maybe using them for tags), Java's HotSpot VM chooses to only store a 32-bit offset for an eight-aligned heap object if the entire heap is known to fit within 2^(32+3) which is 32 GB from its base address.
https://news.ycombinator.com/item?id=22398251
And didn't somebody write about creating a large aligned arena for each type and essentially grabbing the base address of the arena as a (non-unique) type tag for its objects? Then the moving GC would use these arenas as semispaces.