Houve muitas discussões sobre isso. Principalmente, a razão é filosófica. C foi inventado como uma linguagem simples para o desenvolvimento de sistemas (não muito desenvolvimento de aplicativos). Existem muitos argumentos para usar o C ++, mas existem aproximadamente não usando C ++ e permanecendo no C.
No final, é um problema histórico. A maioria das coisas do aplicativo é escrita em C, porque a maioria das coisas do Kernel é escrita em C. E desde então a maioria das coisas foi escrita em C, as pessoas tendem a usar as linguagens originais.
Neste ponto, alguém pode perguntar "OK, então por que é o kernel escrito em C e não portado para o C ++?" . Isso foi discutido no kerneltrap há algum tempo. Uma boa explicação que pode ser citada deste tópico é uma resposta por yoshi314 (citando diretamente):
that's because nearly every c++ app needs a separate c++ standard library to operate. so they would have to port it to kernel, and expect an extra overhead everywhere.
c++ is more complex language and that means that compiler creates more complex code from it. because of that, finding that a problem stems from compiler bug,rather than code error is easier in c.
also c language is more barebone, and it's easier to follow its assembly representation, which is often easy to predict.
c++ is more versatile, but c is more suited for lowlevel or embedded stuff.
Por outro lado, "a maioria dos programas Linux" é bastante enganadora. Dê uma olhada nas aplicações gráficas. O Python está ganhando cada vez mais espaço, especialmente em ambientes GUI no Linux. Sobre a mesma coisa que está acontecendo com o Windows e o .NET.