I don't think that it's good for the Linux desktop to be too fragmented, forks should rejoin the main projects and thus make Linux a better experience.
So if at some point in the future the community / Canonical has to decide between Unity and Gnome-Shell how hard would it be to merge the two projects?
Consider that Unity and Gnome Shell (aka Gnome3) share almost the entire operating system stack. The part that is vastly different is the shell part, the visual elements. I'm afraid when it comes to the shells, they are impossible to consolidate.
More likely there will be a feeding of ideas between projects. Each project will get some things right and some things wrong. The project with the better sense of design, humility to accept what users want and ultimately the team with better economics (more developers) will develop faster and better over time.
They certainly have plenty of differences both on a technical and functional level. They're also focussed on separate (though similar) creative directions and they're both very much in development and not final. It could easily be years before either settles with something that proves itself to work well.
At any point, ideas might traverse the void. This has clearly happened several times over already, nothing wrong with it and while it helps an on the interface-ideological-level, it does nothing to help developers unite behind a common programming language or compositor.
I think it'll probably end with one solution "winning" (through progress on helpful features) and being adopted by the other camp but then again, there are few types of developers more stoic than FOSS developers. This might even take something like Wayland (essentially a replacement for X with its own compositing layer) coming along to mix things up.
I wouldn't put a bet on either breaking far away from the other. At least, not until the underlying tech changes.
Seems unlikely. Most of unity is based upon compiz, while GS has built itself a new toolkit (based upon Mx) and stack, along with a new WM. GS could more easily emulate Unity than the reverse, and I wouldn't be surprised to see skins that did this, but they probably aren't going to integrate. Fundamentally this is an issue of Window Managers. Gnome built its own WM (really a port of Metacity to Clutter with many improvements improvements) and GS is a plugin to Mutter. JS is used for pretty much all of the interface elements while C is used in the libraries (Mutter is in C). JS is integral to the experience (not a bad idea considering how much effort is being put into JS research so things should rapidly improve, not that they NEED to). Unity took an existing WM and extended it and built an interface around it (very similar to GS) but used existing toolkits hence it is more difficult to create gl contexts in Unity unless you use Qt (I assume they will eventually move to it completely). Unity is a good choice for Canonical since they want to create a unique environment since it reuses so much but by not following upstream closely they risk always being behind the tech curve in gnome (again, another reason they will probably move to Qt). So, if you could convince Gnome or Canonical to give up one of their WMs you might be able to get a merge, but what's the point? Let them create 2 different desktops and lets see which is better.