Generating C code as a "portable assembly language", to take advantage of deeply evolved optimizing C compilers, is a common practice that apparently originated with the first C++ compiler, Cfront. At the time, the technique was not widely understood, and Cfront was often dismissed, sometimes dishonestly, sometimes ignorantly, as "just a preprocessor".
Nowadays, it has become more common to target LLVM, instead, and all our compilers may be similarly dismissed as "just preprocessors" for that. Or not.
So we might wonder why this library does not generate LLVM, instead. One good answer would be that there are still execution targets for which there is an adequate C compiler but no LLVM target.