First of all, you CAN mod the CryEngine for free. In fact, Crytek went and made an unofficial SDK (due to Far Cry being Ubisoft property now) after the fans demanded it (can't say Nihilist did the same, now did it?). Ubisoft now supports it, but when I first checked it out (about 3 months ago), it wasn't. You can get the CryEngine SDK
here.
As for developers using the Unreal engine more, it's really simple. The Unreal engine has been around for eight years. Developers now know how to use it easily (since it hasn't changed much since its inception). But support for the Unreal engine is slipping. Have you ever tried making a stage using that engine? If you can make anything without it crashing once, I'll tip my hat to you. But it's impossible. The engine is unstable, old and honestly kind of limited. Hell, you don't have access to all of it's features unless you buy the license for it. And that license is offered at a pretty hefty price.
Meanwhile, Ubisoft is there making Assassin's Creed using a modified version of the CryEngine at its core (like how they used a modified version of the Unreal engine for Prince of Persia and its Tom Clancy games). Even better? Most of the CryEngine's features are available to everyone, including bump mapping and use of other shaders, while the Unreal engine won't allow you to even think of using a bump map in anything unless you have a license.
Plus, with the CryEngine, if you're in it just to make maps to play in, at least you don't have to load the damned thing every time you want to see if that elevator you programmed works nicely. Just press a button and voilĂ , you're instantly transported into the map at where you're looking, allowing you to test out whatever you just added without waiting for it to load.
So, overall, the Unreal engine is an impressive one due to it's years of existence, but Source and the CryEngine are by far superior in every way, and the fact that more developers are switching over to these engines proves that.