Well you don't have to make copies of strings to slice them, just ask strtok! </s>
C programmers are expected to make the best choice based on the situation. The various choices trade off memory usage, CPU usage, source code readability, and program correctness.
Which is problematic for thread safety and depending on the source of the string (constant) may not be possible.
If available, strdupa() would be a fine way to get a suitable local copy of the string. Commonly though, the programmer knows that there will not be threads and can make the string non-constant.