For RMOC:
We collect address data on our membership form (even though we haven't snail-mailed anything to members in years), and we don't have any members who've tried to use different addresses for various members of a family. (RMOC doesn't have a strict rule about family members having to be in the same household, as far as I know, and it hasn't ever come up in the past few years.)
For group memberships, we only create one record for the group leader / main contact. We give our member discount to all students / juniors, so we don't have a need to track each individual member of the class, troop, etc. (which would be difficult, anyway, since they change a lot).
I assume you already have a system in place to identify all members of the same family membership, but here's what we do (just FYI): every record in the membership table has a Member_ID and a Subscriber_ID. I assign the Subscriber_ID as the person in the family who's the most frequent attendee at our meets, and the IDs are just their names concatenated together (probably not the best practice from a database design perspective, but it's much easier than having to look up ID numbers anytime I need someone's Member_ID.) For example:
Subscriber_ID | Member_ID |
CarolSmith | CarolSmith |
CarolSmith | MarkSmith |
CarolSmith | MeganSmith |
CarolSmith | AaronSmith |