COW-strings aren't free. In a multithreaded environment they require atomic operations for use counter, which isn't cheap.
Some time ago some implementations of C++ did use COW-strings too, but this approach was rejected due to such performance concerns.