配布が容易
宣言と定義が分かれないから読みやすい(人による
宣言と定義が分かれないからリンケージとかの罠にはまりづらい(場合によってはむしろODRの罠にはまる
翻訳単位が大量にある状況ではヘッダに実装したうえで少数のcppからインクルードした方がコンパイル速い
テンプレートの場合はほぼそうせざるを得ない

などなど・・・