Everywhere I've worked solved this by having the toolchain available via a network share that you would mount/copy, or checked into p4 so that everyone would be on the same version and you would know what compiler version was used to build a particular release. I suppose you could achieve the same thing by building in a Docker container..
This is kind of the idea behind the hermetic environments that Bazel enforces, and is essential if you want bit-for-bit reproducible builds.
We have used Docker images in past but it gets really annoying with large code trees and access permissions for programmers and debuggers...
>on Windows you need to download and update it manually
you don't need to update it manually, it will show a popup that an update is available and will update itself once approved.
Vscode is available as an official snap (on Windows you need to download and update it manually), Segger tools and openocd are fully supported. GCC cross-compiler and even some flashing tools are part of the distro and just an apt-get away.
This also means that everyone get the same tools (same version, same bugs). Which makes collaboration much easier.