This is a C++-ism that has no place in C (and overused in C++).

The most popular "header only" (or rather "single file" libs) are mostly written in C though:

https://github.com/nothings/stb

Important difference to typical C++ header-only libs: STB style libs don't use the inline keyword, but instead place the implementation into an ifdef/endif block.

It's really just for easier distribution and integration, and the difference to a single .h/.c pair isn't all that big.

Definitely not big enough to get all riled up about it - the actual problem are libraries that come in dozens of source and header files and with their own build system files, or C++ libraries which put the implementation into inline code, like most C++ stdlib headers (because this increases compilation time for every file which includes such a header).