I would think that not (elem n ns) would imply that n is a data family. Is there a scenario where this is not the case? I'm a little disturbed by calling tcLookupTyCon in the RnM monad. Yes yes, I know RnM and TcM are synonyms, but we should take advantage of that rarely. (Interleaving renaming and typechecking when doing Template Haskell is a good reason, for example. I'm less convinced here.)
More broadly, if n is not in ns, and we've omitted an export list, I think we really should be re-exporting n. The scenario means that a module is defining some sub-parts of a declaration, but not the declaration itself. If we're exporting the sub-parts, let's also (re-)export the whole thing.
I still think this case applies only for data families, and the user manual needs document it as such, but the implementation can be broader.
Also, I think this deserves a release note, as it's a user-facing change.