The point is to keep C small and flexible. It supports whatever kind of string implementation needed by the present environment, platform and algorithm.
That said, several “high-level” string libraries for C exist that make it safer, more efficient, etc. Some of them are even pretty clever, allocating extra space right before the C pointer to a null terminated C string that it gives you, so it can do its own bookkeeping.