Sorry for necroposting, but, I guess, my post will be useful. I don't see, that anybody has mentioned obvious way to decrease EXE size - runtime packages. It's one of two biggest EXE size offenders. Second is RTTI. Real reason, why C++ programs are so small - they use C++ Runtime Redist. I.e. all that msvcrt.dll stuff. Problem with Pascal - is that all that stuff is always built-in into every EXE and DLL, it produces. But! Funny thing, but Delphi allows this too. And this mechanism is called "Runtime packages". Problem is - Delphi Redist isn't as well-known, as C++ Redist. Not many developers know about it and provide it with their applications. They usually prefer to provide bpls themselves and this kills whole advantage of using runtime packages. Because if they're would be installed system-wide, they would be shared between all apps.
For example for my app (total size, including plug-ins):
Built-in 32bit: 9.75Mb
Built-in 64bit: 15.00Mb
Runtime 32bit: 4.77Mb (-51%) + 6.00Mb runtime
Runtime 64bit: 7.16Mb (-53%) + 8.62Mb runtime
But size change per plug-in is more dramatic:
Built-in 32bit: ~375Kb
Built-in 64bit: ~610Kb
Runtime 32bit: ~75Kb (-80%)
Runtime 64bit: ~130Kb (-79%)
So, more plug-ins - bigger advantage.