If for no other reason, it would be unwieldy to have one header file for each symbol for anything but the most trivial programs. A common thing to do is to have one header file per "module" (which may be roughly analogous to a class in C++).

Imagine you have an LCD "module" for printing stuff to an LCD screen. You might have 15 different functions (each function is a symbol) to clear the screen, move the cursor, print a string, write a character, create custom characters, etc. Would you really want to have 15 header files, one for each exported function (which you would have to include in every source file that uses the LCD "module")? Or would you rather have a single header file that describes the interface to the LCD "module"?