Users do not get two copies because the mailing list software is smart enough to calculate a set difference between the expanded mailing list, and the set of addresses which are already in To: or Cc:
GNU Mailman makes this a configurable preference (per subscriber, I think!) The reason is that some people prefer to get the duplicates. A possible reason is that they want the official list copy, which is subject to some custom mail processing rules based on its list headers, or rewritten subject line.
By the way, some people also prefer to get only mailing list digests. For users who receive only digests, discussion participation is still possible because the discussion is based on the normal To/From/CC mechanism of e-mail.
Didn't the intended recipients occasionally miss replies to their messages, and wasn't it a bad idea to put the responsibility of re-sending bounced (or un-routable) email to the person you're replying to in the hands of the person writing the reply, not the mailing list itself? I doubt it would have worked very reliably with usenet addresses or the early internet with all those relays.
Remember when all the UK's host names were backwards, and you'd route mail through nss.cs.ucl.ac.uk (or uk.ac.ucl.cs.nss, depending which side of the pond you were on), which would swap the host names around on the way through?
The Brits drive on the wrong side of the road too, so I suppose backward domain names made sense to them.
Counterexample to your claim: browse the linux kernel mailing list archive at https://lkml.org/
On any message you can click [headers] to view the headers. You can see rich Cc: lines full of addresses. Well, you can't see the addresses because they have been scrubbed. But you can count the commas! For instance:
means that it was CC'd to 6 e-mail addresses, four of which were in the "local@domain" format, with no display name, not wrapped in angle brackets.For instance, exhibit A:
https://lkml.org/lkml/mheaders/2014/9/30/320
Note how "Kernel Mailing List <>" is on the Cc: line, too.