The problem with "the language tooling is already a build system" is that cross-language dependency chains are a thing. The moment you need a Rust or Zig file to be regenerated and recompiled when a JSON schema or .proto file is updated, you're outside what most of those language-specific toolchains can support. This is where Bazel absolutely shines.
If all of your dependencies need to use the same build system as your project then your build system/process is defect anyway. It should be possible to invoke a foreign build system as part of your build.