When the IMAP backend gets a "delete" command it performs a set of the "deleted" flag on the message followed by an immediate "expunge." This is how IMAP deletes things, but there's a problem with doing that in an Exchange server.
Let's assume you have two clients connected to the same IMAP server account. One is on Exchange through Z-Push. The second is using IMAP via Thunderbird. When the Thunderbird user hits "delete", this does not do an expunge – it just sets the flag. The messages are still there in the folder, but are marked "deleted" (usually struck-through in the subject.)
Now the same user deletes a message on their phone. This marks the message deleted on the phone and then submits an "expunge", which deletes not just the one message marked *but all the others* that the instance on the desktop marked! What's worse is that they're *really gone*; the folder is compacted on an "Expunge" and thus there's no way to retrieve them.
This change modifies the behavior of the backend so that it only executes an expunge if you're in the trash folder. In all other cases a "delete" moves the message to the trash instead. This prevents the surprise that otherwise awaits you if there's a desktop client connected to the same account (Thunderbird, and some others, can be configured to do this as well should the user want consistent operation across user interfaces.)