Personally I write in Java using Swing as the GUI of choice as it can be ported easily between Linux, MacOSX and Windows. The development tool I use is Netbeans IDE, a common tool used within our group. Other groups use Eclipse IDE.
When we use computer models it is, in principle, a good idea for the entire software stack to be open to inspection ... just in case there is any suspicion that the modelled results could be from an artifact from somewhere in the computation process.
Not so sure how the GUI is important for that - perhaps that it should allow the kind of access that makes the nuts-and-bolts apparent? Most GUIs are designed to hide a lot of the processes. But iirc pretty much every free-software GUI includes some sort of terminal emulation. Certainly every one that implements GNU.
I really liked Gnome 2, but I did not care for the attempt to re-make Gnome 2 as Mate. I don't really like Gnome 3. When Gnome 3 came out, I switched to XFCE.
However, XFCE felt kinda like a step backwards. So I tried Unity, and I liked it for a while, but I'm not a fan of some recent changes. Right now I'm using KDE 4.10 (or 4.11? I forget), and it is pretty slick. I installed a Unity-like launcher as well. I also installed XFCE's terminal emulator, because I don't like Konsole.
I wouldn't say any of these things are "best". What is "best" for you depends on how you like to use your computer, really. The nice thing about Open Source is that you can try them all and decide what you like, or even mix and match pieces like I did.