It is not the choice of language that makes utorrent so lean and mean (although it certainly plays a role) - it is the choice to kill portability in favor of efficient, platform-specific code. Vuze is so huge and bloated in comparison, *mainly* because it tries to be generic and cross-platform, which means duplicating and recreating a huge amount of code and/or using a huge and bloated cross-platform toolkit (like Qt, Gtk or wxWidgets).
You could reproduce utorrent in C# with minimal size overhead if you resorted to invoking win32 directly and ngened the resulting binary (this means native code, i.e. no JIT on startup). Yeah, this translates to no WinForms, no GTK#, no WPF - but it can be done, if size and startup times are your greatest concerns.
The issue is not that Java/Mono/.Net/Python are inherently horrible. The issue is that developers relying on those technologies generally favor other things than pure speed and memory consumption: stability, ease of development, ease of maintainance. However, good Java/Mono/Python developers can and *will* optimize for startup time, speed and memory consumption (check out Paint.NET for an example). The disparity you are seeing is a matter of priorities rather than an unsolvable issue.