Assuming we want to exchange two tokens, let's say, FBI and NSA.
Centralized exchange:
send your FBI to exchange's wallet -> exchange updates your balance in its database, i.e. postgres -> trade for NSA -> withdraw NSA, which causes the exchange to send you NSA tokens (if they have them) and update another record in its DB.
The problem is in "if they have them". While normal banks are FDIC insured and a run on the bank won't prevent them from giving you your money, crypto exchanges provide no such guarantees. If the money is stolen from the exchange, like in the case of the OP, then you are SOL. Basically, you have to trust the exchange as much as you trust your bank. And clearly one entity is way more trustworthy than another.
In the decentralized exchange case, instead of trusting an organization to keep money safe through operational processes and tight regulation, you trust a smart contract. Provided that the smart contract has no bugs, this pretty much eliminates the need to trust the exchange. You trust it just as much as you trust mathematics.
Hope my explanation is not too verbose and makes sense.