Exchange uses its own database engine, and as such there are times that whitespace or space that has been freed by deleted mailboxes, emails, and other clean up functions, builds up.
Exchange by default does not compress its database, or remove the whitespace.
The whitespace is eventually used by new data, so the mailbox database size does not grow until it has to because it has used the whitespace.
There are a lot of times that I have found that I wanted to know which databases have the most whitespace so I know where to create new users to avoid expanding databases.
You can use the following command to display the Free space in each of the databases. Powershell will give you this data in a field called AvailableNewMailboxSpace:
Get-MailboxDatabase -Status | Sort-Object DatabaseSize -Descending | Format-Table Name, DatabaseSize, AvailableNewMailboxSpace
Now you can do defragment for the Databases and all the “AvailableNewMailboxSpace” will be free