"multihreaded programs" seems like a pretty big use case, and it seems to occur in just about every major multithreaded C program using glibc malloc.
I would agree with you if it didn't seem like other allocators are solving this without any tradeoffs.