Well, C++ is essentially C, especially the part of it that is low level. And Android has C in the kernel, which is Linux. The point was at the bottom of it all is almost always C.
Squeak primitives are written in an extreme subset of Smalltalk that translates directly to C, much of this just for the practical ability to debug it while building Squeak from scratch. After the fact though it's possible to do Squeak totally in Squeak, once you have an assembler. And this brings up one very common reason for C being at the bottom of so many things - it's the most common portable way to do very low level code. In other words, C acts like a portable assembler. Squeak wants to be portable, so it's easier to have the primitives in C rather than port them every time you move to a new machine. Sure, Rust can do this, but it's essentially brand new.