Simply because you might have wanted the compiler to load that file twice.
Remember, that #include
simply loads a file and puts its contents in the place of the directive. This file might be a header file, but may be useful and frequently used piece of source code as well.
Most modern compilers react to #pragma once
doing exactly what you want them to. Remember though, that this is a compiler extension not included in the language specification and it is generally a good idea to stick to include guards – you’ll be certain, that it works on every compiler and in any circumstances.