You've basically answered your own question, because Minecraft is run off Java, and Minecraft PE, XBOX etc. are all on C++
It's impossible to have cross-play due to there being two totally different coding languages, that's my theory.
As I said earlier, this is entirely incorrect - let's see, what OS are you running? Windows I presume? Most Web sites use some variant of Linux, which has a very different filesystem from Windows - so how can we send files between computers? Because it is only the way they handle network traffic and interpret the data that matters - just as I can use a program coded in C++ to open a world created in Java:
That is not the same as "rename .jar to .zip, do a word search for a string that looks like XXXXX in this file, change these values, rezip and rename to .jar, done."
That doesn't come even close to accurately describing how to make a mod; ever opened a Java class file with a text editor? Just a bunch of nonsense - which must be decompiled into human-readable code, and even then it has to be deobfuscated and fixed up if you want to be able to recompile it (PS: Even Minecraft Java is NOT open source; obfuscation is done for the purpose of making it harder to decompile software - the issue is that Java can easily be decompiled back into reasonably accurate source) - there is a very good reason why virtually all mods require MCP (this includes Forge itself); the only modder that I know of who has gone through all the trouble of deobfuscating the game themselves is the creator of Optifine (I've also done a bit myself but only to make some very basic changes to a single class with a bytecode editor so I can hack 1.7+ to recreate the epic caves that older versions had, which depends on Mojang not changing the class I modify. Of interest, that is what you see in the first two links; after finding the class I can use Java Bytecode Editor to change the 15 and 7 on lines 7 and 18 to 40 and 15 respectively, the same ones used prior to 1.7 - shame on Mojang for not adding customization options for caves when it is that easy to change the size/frequency of cave systems!).
Making the Java version crossplay would be rather difficult. For one, the Java version is the only edition that's coded in a different language from the other versions, and secondly the two platforms still have different features. Probably not worth development time trying to resolve headaches, especially since the Jave Edition is the least bought version of the game and isn't what they consider the primary version anymore.
The language is entirely irrelevant to cross-compatibility; that is like saying that all of the map viewers and editors that use other languages (e.g. MCEdit is based on Python, MCMap C++, Unmined (older version) Delphi) shouldn't be possible but the only thing that matters is how they read the data from the save files on disk or interpret network packets and most modern programming languages and hardware platforms adhere to the same universal standards (e.g IEEE-754 for floating point).
The issue is not just that they have different features but that many blocks, items, entities, etc have very different IDs; for example, when they added new types of fences they made them use new block IDs in Java but metadata in PE (at least the block ID is the same as that for oak fences, but other blocks use totally different IDs). It would be possible to translate IDs and names (the game even does this when you open an older world since they are always changing various data formats; 1.12 can still read numerical item IDs from a world created before 1.8) but missing items and features are still an issue.
Also, consider that even revisions of the same update (such as 1.12, 1.12.1, 1.12.2) can often only connect to a server of the exact same version.