I guess strxfrm and the like date back to a period in the 80s when symbol names had to be kept short for the compiler/interpreter's sake. Like while BASIC back in those days technically allowed > 8 chr names, the interpreter only stored the first 8. In other words, the first 8 needed to be unique. As such, people tended to stick with <= 8 chr symbols to avoid interpreter issues. I think C allowed up to 31? But the culture of <= 8 prevailed nevertheless.
Then in the 90s, such restrictions were largely dropped in most languages, and symbol names ballooned in size to take advantage of this new freedom. In C++, you even had reserved words growing to the likes of reinterpret_cast around that time, but APIs just got ridiculous along the lines lengthy_class_name_followed_by_fully_spelled_out_method.
Today, people seem to have come to their senses and settled on more reasonable lengths, though not to 80s extremes. Like going back to C++, we have new reserved words like decltype and constexpr. In the 90s, these would likely have been spelled out in full like constant_expression?