Excessive sizes are usually caused by inclusion of libraries and features that are unnecessary. For instance, if you had a simple console that did absolutely nothing, but you still included C++'s standard IO library, the size of the entire library will contribute to the overall size of the program. In addition, the compiler is free to add additional code (possibly for optimization reasons) without your knowledge, which may also contribute to the overall size.
The path to understanding begins with realising what we do not know. If you understand a little more about the limits of your own knowledge, you are a step closer to breaking those limits.
Also, they're fun to read and what that guy does abusing the ELF header to make it smaller is brilliant.