I've got inn-2.4.2-1. "xhdr newsgroups" lies -- it doesn't return the actual Newsgroups header of the article, but rather a list of newsgroups with all groups that aren't available on the server stripped out. This behavior is patently incorrect. Just because a particular newsgroup doesn't exist on my server doesn't mean it shouldn't be preserved in the Newsgroups line when I follow up on a posting. With the behavior I described above, if my News reader uses xhdr to determine the list of newsgroups to which the post a followup, which it does in fact do and which is a perfectly reasonable thing to do, it'll get it wrong. As far as I'm concerned this is a violation of the NNTP spec. The xhdr command is supposed to return the actual message header, not the header as INN chooses to pervert it.
It sounds like INN is trying to optimize the response by looking in the x-ref in the overview rather than having to re-parse the article, because that's the behaviour of x-ref. You're right, that's a violation of RFC-2980.
Will be fixed in version 2.4.3...