tl;dr – Close your Synchronization Rules Editor and just populate the mailNickname attribute in AD.
There is a growing number of business networks that have never had Exchange installed on-premises. That’s awesome. You absolutely do not want to waste your time protecting your Exchange environment against whatever scripted threats can be thrown at you 24/7, especially when you can just pay Microsoft to do it for you.
However, what that means is you end up missing information in a few places that Azure AD Connect is looking. If you’re able to provide those, then the default sync rules already have everything you need.
A number of results delivered when you search for something like “msExchHideFromAddressLists azure ad connect not syncing” will tell you to edit one of your sync rules and add the transformation for that attribute. “In from AD - User Common” is often cited as the perfect place to do this. Such solutions were all the rage during the heady days of DirSync, but now that kind of nonsense is just going to give you an unnecessary headache so Don’t Do That.

What you should do instead is take a look at a rule right below it: “In from AD - User Exchange”. The Transformations area will have everything you’re looking for, so you may think to yourself “SWEET dude okay I just need to get this part to work now” and bro the answer is like totally obvious.

Populate your mailNickname attribute in AD. That’s it.

And here’s a PowerShell script that will do it for you!
foreach ($username in (Get-ADUser -SearchBase "OU=Users,DC=push,DC=blue" -filter *)) {
Set-ADUser -Identity $username.samAccountName -Replace @{ mailNickname = $username.samAccountName } -verbose
}
👊 Done!