Você está um pouco confuso, eu acho. A "localidade C" é uma localidade como qualquer outra, que, como você aponta, é convencionalmente um sinônimo de ASCII de 7 bits.
Ele está embutido na biblioteca C, suponho que a biblioteca tenha algum tipo de fallback - não pode haver nenhum locale.
No entanto, isso não tem nada a ver com a maneira como os programas construídos a partir do código C lidam com a entrada. A localidade é usada para traduzir a entrada que é para um executável, que se a localidade do sistema for UTF-8, UTF-8 é o que o programa obtém independentemente de sua origem ter sido escrita em C ou algo outro. Então:
I would be surprised to see code that can only deal with 7-bit clean
input and cannot be easily adapted to accept a UTF-8-enabled C
Realmente não faz sentido. Uma parte mínima da fonte C padrão que lê a entrada padrão recebe um fluxo de bytes do sistema. Se o sistema usar UTF-8 e produzir o fluxo a partir de algum hardware HID, esse fluxo poderá conter caracteres codificados em UTF-8. Se vier de algum outro lugar (por exemplo, uma rede, um arquivo), ele pode conter qualquer coisa, o que torna a suposição de um padrão UTF-8 útil.
O fato de o código do idioma C ser um conjunto de caracteres muito mais restrito que o código do idioma UTF-8 não está relacionado. É chamado apenas de "o local C", mas na verdade não tem mais ou menos a ver com a composição do código C do que qualquer outro.
Você pode, de fato, codificar caracteres UTF-8 em strings C na origem. Presumindo que o sistema é UTF-8, essas strings parecerão corretas quando usadas pelo executável resultante.
O link "Roger Leigh" que você postou em um comentário que acredito se refere ao uso de um conjunto expandido (UTF-8) como localidade C em uma biblioteca C destinada a um ambiente incorporado, nenhum outro local deve ser carregado para o sistema para lidar com o UTF-8.
Então a resposta para a pergunta, "O que quebraria se a localidade C fosse UTF-8 em vez de ASCII?" é, eu adivinharia , nada, mas fora de um ambiente incorporado, etc. não há muita necessidade de fazer isso. Mas muito provavelmente isso se tornará a norma em algum momento para bibliotecas como o GNU C (pode muito bem ser, eu acho).