Die BSDs sind es in meinen Augen in erster Linie, weil C damals, als BSD geboren wurde, state of the art war und darüber hinaus als Hochsprache über die Einbindung von Assembler die Low Level Programmierung ermöglichte. Open-, Net- und FreeBSD sind direkte Fortführungen dieses Quellcodes. Viele weitere unixoide OS wurden nicht viel später geschrieben (80er Jahre) und haben die ja gut funktionierende Sprache übernommen. C++ ist neueren Datums und war erst Ende der 80er einigermaßen "fest" (Sprachdefinition). Es sind in den 90ern einfach nicht mehr so viele OS geschrieben worden. Linux hat mMn ebenfalls einfach weil es erstmal naheliegend war und "keine großen Planungen erforderte" (sondern "einfach nur die Übernahme der bestehenden Unix-Standards") C genommen (bitte nicht falsch verstehen - es ist immer noch verdammt viel Arbeit - aber wenn man's in C++ gemacht hätte wäre es noch viel mehr geworden - und immerhin startete das Projekt ja als ein Hobby). Großer Pluspunkt für C ist auch, dass es dafür Compiler für so ziemlich jede Hardwareplattform gibt.
Neuere OS sind durchaus nicht (nur) in C geschrieben: NextStep, aus dem sich später Darwin (Unterbau von MacOS X, basierend auf FreeBSD) entwickelte ist z.B. zum Teil in C++ geschrieben.