Well, I would say the reason why it is done this way is because QApplication is a kind of "Singleton". At any point in time, there may not be more than one QApplication in a Qt application. (Which kind of makes sense :-)
Things like QApplication::setFont() and bretheren have an interesting meaning too if not QApplication is yet allocated; You could create a functions "setupDefaults()" that sets fonts/styles/pallettes and this kind of stuff, and be able to call it at any time. If for example no QApplication object exists yet, those settings will be stored away and used as soon as the next QApplication is instanciated.
In addition to those, you will find static accessors such as QApplication::focusWidget() those functions are nice to have as a static because they are usefull in places where it would be a hassle to ship a pointer to the current application to (and using qApp or QApplication::instance() everywhere just would look ugly. ;-) Besides the semantics for that call is always valid: if no QApplication instance is instanciated there simply is no focusWidget which means the function returns 0.
Now, this is probably not "by-the-book" object oriented design, but I would call it rather sensible. Mind you, QApplication is a very special case, so you will not find these design choices in too many places (and you should not of course) but here I think they make life just a little bit easier, so I am ok with it :-)
Have a nice day
Bookmarks