I've completed upgrading an MVC site to version 9, and everything is working fine using the 8.2 recommended approach - Kentico 9 is fully backwards compatible with this.
This approach entails using a single solution containing a CMS project and an MVC project, where pages or page types are tied to an MVC controller and action. This works great, and IMHO provides benefits you wouldn't get if you split your solution into separate MVC and CMS solutions as per the 'new' recommended approach (benefits include page aliasing, SEO optimisation/redirects).
When you upgrade an 8.2 site to 9.0 you can follow the instructions here to make sure your solution continues to work in the 'old' way.
The 'old' approach means that all Kentico functionality works in MVC as the CMSContext is available. You also have the added benefit of being able to mix portal pages in the same solution.
The problems with functonality not working and the suggestion you can only run a brochure site come in when using the recommended 'new' approach. Going down this road means you have no CMSContext available in the 'pure' MVC website solution, and because Ecommerce and EMS rely heavily on the CMSContext, these features won't work until Kentico make changes to the API to decouple them from the CMSContext.
My suggestion would be to use the old approach with MVC for anything other than a brochure site.
It goes without saying that nothing portal based will work in the new approach either.