Please file a bug on this and vote on it, so we can keep track of interest.
To fix this for clients using the SOAP API (web client, Outlook) probably isn't that hard, but to fix it for LDAP clients making queries directly might be tricky without some schema/layout changes.
There is a painful workaround that should work for both SOAP and LDAP, and a less painful one that would only work on SOAP, but would hide all aliases for accounts in a domain.
The more painful workaround would be to remove all the aliases for the account, create a distribution list with the same name as one of the aliases, add the rest of the aliases to the distribution list, add the original account as a member, and finally mark the DL as hidden in the GAL. Fairly painful to manage, and also means you can't login to the account using any of those aliases as the username anymore.
The other workaround (SOAP only) is to change the zimbraGalLdapAttrMap setting that maps email addresses from the GAL into email address in a contact. The rule as shipped is:
Which looks for LDAP attrs on the left-hand side, and copies them to contact attrs on the right. If you don't want zimbraMailAliases showing up, you'd have to change it to something like:
The reason you have to remove all the mail2-6 attrs on the left is for every aliases, we also add a "mail" attr, so after grabbing the primary address from zimbraMailDeliveryAddress (and setting email), we would then set if any "mail" attrs are set, and start copying those to email2, email3. If you remove "mail" altogether, then distribution lists won't show up in the GAL, because they don't have a zimbraMailDeliveryAddress, just zimbraMailAlias entries.
hum, we probably could also fix in the web client only, and have it not display GAL entries multiple times for the same entry, assuming that info makes it all the way back to the client.