well another point (swiftly mentioned by martin) is not all apps use big toolkit like Gtk/Qt5/EFL, for example VLC/Mplayer-Mpv/Blender/wxGtk based apps/etc, and in fact many of this applications have to deal directly with display servers regardless the tollkit(for example, mpv have to directly query the display system regardless any toolkit).
another structural problem is composition, in wayland as shown in many demos provide a very flexible composition path and since the composition can be done by the client and/or the compositor at global scope allows you to deal with pretty freaky neat possibility like nested compositing per client, for example i could write a plugin for MPV player that allows to composite the vdpau overlay with client side effects and add multilayer presentation for subs/PIP/Geodata and inform the global compositor that only the main overlay is used to plasma preview task widget(ofc kwin/mutter/efl should support this through dbus and/or as an compostior plugin) but Mir do server side central process composition and even if it can be disable per process i will have to relay in EGL for do in process flatten superpositioning since i do not know if Mir even support nested composition or if it works as expected, so as a developer ill have to choose either take the safe path that should theoretichally work in all 2 at the cost of effciency and a neat feature or support only wayland?
sure you can argue that mir will probably allow something similar, bla bla but at the end of the day is a 3rd path i have to test, a 3rd api i have to learn, a 3rd system i have to QA, probably a third code path i have to write, a 3rd source of problems(sure lets assume mir support this but there is no warranty will always work with all systems, especially since it could not be too popular for ubuntu specific apps), is a 3rd path i have to test against a miriad of drivers, etc. <-- this is the problem
Note: ofc in the example Xorg will automatically hide all this feature since is not technically feasible at all but as a developer i knew this and decided to add legacy fallback for X or Y reason