Probably it's better to mark every functions as static in a header-only library, not just those internal ones. But I think code bloat would still be an issue if we don't use LTO or other optims across compilation units.
edit: Yeah, defining *_IMPLEMENTATION appropriately would address these issues.