You might say this is "fragmentation." Up until two years ago Ubuntu had a different shell (Unity) with a different API for this, and up until last year XFCE was mostly still using GTK2 and its deprecated APIs. Things are getting better now (Ubuntu's tray is just an ordinary GNOME extension, XFCE supports the new API) but it's taken time to reconcile everything.