The issue is the ACL order. When exchange hides DL Membership it puts the ACL
into a non-canonical order. Everything else forces the ACL into a canonical
order that is why the ADUC[1] says that it can't modify the ACL of a hidden group.
The whole thing comes down to how ACLs are implemented. They are a list of ACEs,
the first DENY ACE that applies to the security principal being checked stops
check of the ACL. You have inherited ACEs and explicit ACEs, explicit overrides
inherited. DENIES override GRANTS. So if you put them together, an inherited
DENY can be overwridden by an explicit GRANT.
If you are looking to duplicate this functionality w/o using the Exchange
non-canonical formating (aka hacking) of the ACL, you would do it by clearing
the ACL on a group (except for system and admins), placing the group in an OU
and only allowing read for the properties you want everyone (auth users) to read
on the OU for groups, and then explicitely granting RP on member for whomever it
is you want to read the membership on the individual groups. If you are using
Exchange, don't forget to allow Exchange access explicitely because in certain
multidomain circumstances when reading specific GCs it relies on auth user's
access to the membership attribute.
joe
[1] This is now, when this first happened, ADUC would correct the ACL and the
membership would be revealed again.