Because looking up a macro name for each library is easier than adding a c file to your makefile? You could still always do
#include "impl.c"
and this would still be nicer than #define XZUGG_IMPL
#include "impl.h"