This is the whole issue with Swing: this a wonderful piece of software, the best GUI framework I ever worked on. Really. SWT, on the other hand, is inconsistent and difficult to use, brittle at times and indeed full of dirty hacks when you look at the code. And still I'm using SWT because at the end of the day the end-user doesn't care whether the toolkit is nice and neat.
What matters is platform integration: SWT supports Windows 7 jumplists, non-rectangular windows for ages, uses the native file selector (gosh how I hate Swing as a user for this), has a decent native drag&drop, is low on resource consumption, supports other OS plugins such as Windows speech recognition etc... Most importantly, it allows you to get out of the sandbox by directly exposing the underlying platform's APIs. Want to use some Windows-specific effects such as transparency or whatever? Just call OS.sendWindowMessage and you're done. Sure this will cause platform incompatibility but the end-user doesn't care (hint: users don't care whether the application they're using looks the same on their neighbour's computer, what matters in how it looks on theirs).
Pluggable look&feel and cross-platform consistency is almost never part of any requirement, and I'll trade cross-platform compatibility for a Java P-Invoke instead of JNI anytime.