Python from the start has always been willing to use other languages and tools if it made sense. It's a pretty common pattern (at least in the data science and research circles I've been in) to write the original in python to see if it works, and then to port it over to a lower level language (C, Rust more and more these days) and expose an interface to it in Python.
For things like dependency resolution, where you're doing a lot of heavy CPU operations, there is a lot of room for optimization in lower level languages.
Bootstrapping is such an odd concept. Like, something that's self propagating is in a sense not fully reproducible and holonomic, unless you maintain the original non-bootstrapped version which would add tons of work.
A compiler bug could put a bug in the compiler and propagate itself indefinitely.
An implementation in some other languages that has an implementation in C means you could theoretically start from ASM and rebuild.