What operating system and processor architecture are you using (go env)?
go env Output
$ go env
set CGO_CFLAGS=-g -O2
set CGO_CXXFLAGS=-g -O2
set CGO_FFLAGS=-g -O2
set CGO_LDFLAGS=-g -O2
set GOGCCFLAGS=-m64 -fmessage-length=0 -fdebug-prefix-map=C:\Users\protected\AppData\Local\Temp\go-build4145725796=/tmp/go-build -gno-record-gcc-switches
The reason for this is that Tag contains fullTag, which is an interface. This is discussed in more detail in #51257 (comment)
This is a confusing UX, particularly when the interface is buried deep inside the type. Here the interface is only one level deep, but one can imagine how confusing it could be if the interface were inside several layers of nested structs.
Please correct me if I'm wrong. The specs defines the same rules for map keys as for stuff that implements comparable, or? If so either the map implementation in Go is broken in general or how 163da6feb525a98dab5c1f01d81b2c705ead51ea change it was too restrictive. I would highly recommend to align both behaviors.