One reason for favoring the
Proxy# a style over the
Tagged style is almost any manipulation of the Tagged variant requires ScopedTypeVariables and a very awkward programming style, while a 0-width proxy can be passed around like an explicit type application.
Otherwise they are largely equivalent if you're careful about how the low level definitions work.
As the original author of both, I'm not personally wedded to either the Tagged or the Proxy style, but I find in practice the Proxy version leads to much prettier code that is easier to follow.
-Edward