The short and accurate answer is simply "because Bjarn decided it."
Although the arguments about which operands should be evaluated and in what sequence provide a technically accurate description of what is happening, they do little (really, nothing) explain why this particular operator cannot be overloaded.
In particular, the same basic arguments apply equally to other operators, such as operator && and operator|| . In the built-in version of each of these operators, the left operand is evaluated if and only if it produces 1 for && or 0 for || , evaluates the right operand. Similarly, the (built-in) comma operator evaluates its left operand, then its right operand.
In an overloaded version of any of these operators, both operands are always evaluated (in an unspecified sequence). Thus, they are essentially identical to the overloaded ternary operator in this regard. They all lose the same guarantees about which operands are evaluated and in what order.
As to why Bjarn made this decision: I see several possibilities. The first is that, although it is technically an operator, the ternary operator is primarily dedicated to flow control, so overloading it will be more like overloading if or while than it would overload most other operators.
Another possibility would be that it would be syntactically ugly, requiring the parser to deal with something like operator?: that requires defining ?: As a token, etc. - all that require quite serious changes in the grammar of C. At least in my opinion, this argument seems rather weak, since C ++ already requires a much more complex parser than C, and this change is really much less than many others changes that have been made.
Perhaps the strongest argument of all is that it seemed that this would not be done. Since it focuses primarily on flow control, changing what it does for some types of operands is unlikely to bring anything very useful.