Hello bearophile,
Because (as you can see in my example) you can use/read/write an out argument before calling the function (if you write it before function call, such value gets overwritten), or just after the function entry, and such usages while "safe" are not nice.
I've used C# and I can remember a few cases where I felt that compiler was nagging me with regards to initializing variables and can never remember be happy it did so. The best I can say for it was that sometimes, it wasn't annoying.
-- ... <IXOYE><