The msExchHideFromAddress Lists object attribute in Active Directory (AD) seems to be used for hiding mailboxes or public folders from the Global Address List (GAL). However, the attribute isn't always present on user objects. Why is that?

You're right: When a user object's or public folder's msExchHideFromAddressLists is set to FALSE, or when it's missing, the object will be visible in the GAL. When the attribute is set to TRUE, the object will be hidden. The reason the attribute is missing from some user objects is that the user's mailbox has never been hidden before. You can easily add the attribute and set it to hide or display all users (or a subset of users) by creating a simple script that uses Microsoft Active Directory Service Interfaces (ADSI) to query AD, find the specified users' user objects, and add or set the value.