Now Charlie gets $10 dollars as credit (not the same as cash) from Alice (mediated through Bob) and wants to buy $10 items from David and Eve. He shows the letter saying that Alice is good for the cash. Without a distributed consensus method, how can David or Eve confirm that they will be able to go to Alice to collect the cash? How can they even know that Alice has the cash in the first place? What if something happens to Bob?
The only way to do this without a blockchain would require something like Paxos, but Paxos only works if the participants are selected a priori. Every new participant would have to be vetted by everyone else, or everyone else would have to follow some central authority that can grant access to the system. If you are going this route, you are just re-inventing a credit cooperative.
If something happens to Bob, too bad. Both Alice's and Bob's IOUs are void because Bob can neither pay up nor demand payment. Both Alice and Charlie are sad because they knew Bob, and their ability to trade was more valuable than the current balance.
You can remove Bob from the scenario and the problem still stands. Say that Charlie gets the IOU directly from Alice, David and Eve are left with duplicate IOUs. Alice has trusted Charlie with $10, not $20, so she can not re-pay both of the creditors. If you say "David and Eve should not have trusted Charlie then, so too bad if they lost each $10", consider the systemic issue if the double spending is made against with thousands of participants.
Without a way to control for double-spending, everyone can mint IOUs freely and any credit note is essentially worthless. And if remove the idea of IOU and try to make all transactions "cash-based", you just turned a fungible-currency into a non-fungible one (are these $10 coming from Alice-the-good-creditor or are they coming from Dick-the-double-spender?)