Coil wanted ILP to be like email -- a universal namespace and a universal protocol with guaranteed interoperability. The problem is that a universal protocol for money with guaranteed interoperability is not practical.
You can't get a company in the US to interoperate with a company in North Korea for money. Ditto for Russia and Ukraine. If you insist on full interoperability, then if one joins the network first, the other is permanently excluded from it. That doesn't make sense.
You can join the email system without having to promise to exchange emails with companies in North Korea if you don't want to. But imagine if you had to agree to full interoperability, that make it almost impossible to get it to work.
Also, there is room in the world for multiple protocols where that makes sense. Yes, ILP is a protocol and mostly what you care about it people using ILP to move money. But it has to coexist with other payment methods and requiring people who have other ways to pay to onboard with ILP endpoints doesn't seem to be necessary.
So Ripple developed Paystring. It is a universal namespace for payment endpoint that can support XRPL addresses, ILP endpoints, bitcoin addresses, custodial accounts on exchanges, Paypal, Zelle, or really any way people can receive money.
It does not guarantee interoperability. If I can only receive money on Paypal and you can only send money on Zelle or XRPL, I won't be able to pay you. But if it is possible for me to pay you, it will "just work". We won't have to play the "Do you have bitcoin?", "no" "Do you have Zelle?" "I don't think so" game.
...