Probably because Rust is a young language. My guess is that designers of more mature languages just don’t know enough about Rust to learn from it. The same can be observed in some of the Go 2.0 design proposals, especially around generics, interfaces, and breaking changes/compatibility.
Keeping in mind that I haven’t read/watched anything at all yet, this sounds like backwards compatibility. C++ has taken the path of backwards compatibility that chooses to make each new version of C++ a strict superset of all previous versions. That’s why C++ syntax has gotten progressively more bizarre (have you seen the lambda syntax?) and keywords get longer (e.g. reinterpret_cast<T>(foo)).
My guess is that there are exactly 0 existing C++ programs that would pass a hypothetical Rust-style C++ borrow checker, especially when you factor in libc et al. That seems to suggest that the best C++ can hope for is really nice error messages. However, I’m not sure if C++'s current design patterns would benefit from a borrow checker (e.g. shared mutable state is pretty common).
As a side note, it’s going to be really interesting to see how C++ vs Rust vs Go’s approaches to backwards compatibility end up panning out. It seems that everyone has learned from python’s strategy and opted to do something else. Live and learn!