Huh, the problem isn't that people have made their own. The string types are all in the standard "boot" packages. The problem is that there is one that is obsolete from another era (String) and four usable ones, each combination of strict/lazy and Unicode/Bytes.
Haskell gets twice as many as Python (say) because of the desire to have strict and lazy versions.
Languages are judged by their standard library, and standard Haskell strings are part of the problem and not part of the solution.
Multiple moderately bad string types, with strict typing that exacerbates interoperability problems, are worse than one really bad string type (like char pointers in C) or nothing at all.
Haskell gets twice as many as Python (say) because of the desire to have strict and lazy versions.