C lacks just enough “modern language features”, by design, that students are forced to be vaguely aware of memory layout, memory management, ref vs copy, shallow copy vs deep copy, maybe even calling convention, etc.
It’s also popular enough that there is an abundance of high quality learning resources for beginners.
No other language threads that needle as well as C.