Because it is assigning the annotation a malformed type. Either sym is monomorphic, in which case there is no difference between calling .tpe_* and .typeConstructor, or it requires type arguments, in which case calling .typeConstructor does not create a proper type. At least calling .tpe_* gives you something which is not ill-kinded, though it is still an invalid type because it has dummy type arguments.

The long and the short of it is that if you are trying to create an AnnotationInfo based on a polymorphic class symbol, the bug is in your rear view mirror. There's no right thing to do, but tpe_* is less wrong than typeConstructor.