Structural equality for GADTs

For sure, take your definition:

type wrap = Wrap : 'a -> wrap

In the graph of Set category, the constructor Wrap is just the label of the arrow that maps any type to the terminal object wrap. Up to isomorphism, your type wrap could be replaced by unit and the arrow is just the polymorphic function ignore. The intuition is similar to the one I gave here with cone and co-cone for type base dynamic dispatch.