You cannot make changes against objects synchronized from AD, so the above is the expected behavior. That said, there is a workaround that might work in your scenario, if all you need to change is to update the primary SMTP address. Try the following:
Set-Mailbox ******@domain.com -WindowsEmailAddress ******@domain.com
This cmdlet should work even for synced users and will overwrite the current Primary SMTP value (while preserving the old value as additional alias, so there is no concern of potential email loss). However, this is not an officially supported method and any changes you make can be eventually overridden by AAD Connect/sync, so also make sure the on-premises value is updated.