IAR and Keil are mostly used with ARM cortex-M, which Nim supports very well via arm-none-eabi-gcc.
In fact, exactly thanks to Nim's piggybacking on gcc, Nim supports many embedded targets including ARM (many versions, including stuff like GBA and Nintendo Switch), RISCV, AVR and MIPS. Would that be the case if Nim had to implement its own machine backend from scratch for every target? Certainly not, and certainly not with the level of optimization and robustness that comes with the decades of development behind gcc.