This helps with type checking. Here is an example:
"foo" *> "bar" :: Parser Text
This code did not type check before, because we had an `IsString` instance for `Parser Text`, but all that the type checker can infer about "foo" is that it is of type `Parser a`.
The instance I added is now for `Parser a` instead, but we also constrain the type of `a` to `Text`. With this the above code does now type check: If the type checker sees `Parser a` it selects the right instance, and by extension will infer `a` to be of type `Text`.