The reasons for that arecaseih wrote: either built with GCC, or at least used the GNU binutils to link the object files, or in the case of FPC, was compatible with binutils.
1. We still use gdb as pretty much the only debugger.
2. origins, we used to use all of binutils till about 2007
3. orthogonality, we still use them more on *nix than on non *nix
The reasons for own tools were slowliness, specially in combination with dead-code-elimination, and piping everything through the assembler is more noticable on Windows. Also the state of dead-code-elimination on Windows is still not ideal (*)
(*) I found references from 2016 that mingw still has problems there.