I suspect this is because WithEvents does not support value types. When you only restrict T to be IVisibleChanged, you are not guaranteeing a reference type, so WithEvents cannot be used. I do not know the syntax of VB, but if it looks like C #, you could do:
' Not sure of the VB syntax.
(Of T As {IVisibleChanged, Class})
, T IVisibleChanged, .