Very friendly to language bindings and dynamic programming.
Introspection is possible (e.g. see gtk-doc)
Parameters and signals comes with description strings (which should be filled in). Presenting help and tooltips is therefore simple.
Some restraint is required!
Not everything should be a GObject. Some performance impact (but don't overrate this problem.
As a general rule: use GObjects for externally visible data structures. They are a bit more powerful than straight C structures (more language-binding friendly, for a start).
Use GObjects when using signals + callbacks to communicate data and state changes is a good idea.