Partial answer to your question is that shared address books are not available using ActiveSync. This is a limitation of the ActiveSync protocol:
Bug 30950 – iphone: sync with shared contacts and calendars
When Apple implements CardDav on the iPhone, you might have a way. This will of course also require Apple & Zimbra to work out kinks in their respective implementations of CardDav. At least for MacOS Address Book, this hasn't happened yet:
Bug 22008 – WebDAV: Add support for CardDav
I don't know about getting external people into the GAL.
The only other way of synching a contacts list I can think of might be to hack up a script that will periodically copy from a master list into each individual's account.
You could also experiment with IMAP. It's not pretty but Zimbra for some reason exposes your Address Books via IMAP. So if it does this for shared Address Books that you've mounted...and if the iPhone mounts the resulting folder, you could at least make the information available that way.
Hm, another method I thought of: put the list into a separate LDAP server and have iPhone access that. You might be able script things so that you can automate copying from the shared list on Zimbra into the LDAP server.