Unity is a black-box machinery with a C# interface bolted on. But as soon as you touch the limits of the black box, your sand castle breaks.
UE4 is the full but raw deal. If you stay within Blueprints, things are easy and predictable. But if you need to exceed its limits, then you have the C++ needed to recompile everything, but things are messy and ugly down in the basement.
As for Unity going public, my impression is that now they are spending much more resources on shiny things to show off instead of fixing bugs that actually affect their paid customers - who mostly do mobile games. Also, it appears that they improved their profitability by massively increasing prices and simultaneously reducing support.