For example, if i did this:
/setblock ~ ~ ~ end_gateway 0 replace {ExitPortal:{X:~,Y:~7,Z:~},ExactTeleport:1}
I would expect to teleport 7 blocks on the Y+ axis (up).
Instead, I teleported to 0,7,0
The ExitPortal tag completely ignores the '~' and interprets the relative coordinates to be static world coordinates
nbt tags don't know what relative is, nbt tags have always been using absolute coordinates, and relative coordinates in nbt tags will simply not be implemented, this is intended