Read your post and have been having exactly the same issue on my project regarding working with the Mecanim Animator Controller component. I want to be able to assign the controller at runtime but its not public. So this is definetly an oversight of unity dev team which needs correcting.
What i did manage to do successfully was to simply make a prefab with the controller manualy assigned and then to use Resources.Load to instance it into the game scene correctly. This does actually work. What i am having issues with doing is making it load from an Asset Bundle which seems to not load the Controller. In fact the Build Pipeline does not even create the dependency with the Controller when building the unity3d file.
This has been a massive minus on mecanim so far since any professional development will require runtime script access to the controller property which is not public.