Because it is not pure Xbase/Xtend, but a Domain Specific Language, and not a well implemented one at that!
Short answer… yes. Very little will need to be changed in your Jython scripts to migrate to OH 3, but hold up on upgrading until all the bugs crawl out of OH3 and the Jython add-ons are ready.
Long answer… there are many other scripting languages that can be used in the JVM, but the Jython helper libraries, documentation, and forum knowledgebase is by far better and more advanced than any other alternative. The Jython add-ons, which would have made installation a couple clicks, have been ignored/rejected/blocked for nearly two years now. To easily install them in OH 2.x, I have had to add them to the Eclipse IoT Marketplace. I’ll make an announcement in the forum very soon, after everything has been polished up. However, you can also manually set up Jython and the helper libraries for OH 2.x. For OH 3.x, you have to use an add-on for Jython, so a manual install won’t work. I will provide OH 3.x add-ons for manual installation right after the updated 2.x add-ons. I am also working on other alternatives to ease the installation.
HABapp is limited to the REST API, like is used by the UIs. Scripted automation is so much more powerful and can do more than even bindings. With it, you have direct access to all of Java, any Java library, and the OH public classes, although Jython can even get to the private ones. As for writing your automation, there is little to no difference using Python2 vs 3, though Jython is it’s own Python interpreter and is much more than CPython. As for Python3 libraries, Jython can use executeCommandLine to run Python3 scripts, so you are not missing out on anything. Jython3 is also under development, though graal-js is maturing faster, so there are future possibilities.
You are never limited though, because you can use the UI, rules DSL, Jython, JS, jRuby, Groovy, Kotlin, HABapp, Node-Red, etc. all at the same time!