It's not possible.
Well, technically it is possible, but pretty difficult to do without sacrificing something in return. Either you use some sort of page builder to manage all the content elements, or you add the styling yourself in exchange for flexibility.
The way we do it in some themes is through Custom Post Types, like here:
The theme is set so it has Slides, Features, and Portfolios, and all of them are fixed into the theme. This makes everything stupidly simple to set up: you just need to start creating posts in each section to populate the homepage. However, it's not an elegant solution from a standards standpoint, nor it is a flexible way to implement it. For the lock-in issues, we have a separate plugin that implements all the custom post types.
You can do this with widgets, theme options, or any other feature of WordPress, but the problem is always going to be flexibility. What if the user wants to change the order of the elements? the number of columns? You can add options to manage those too, but there will always be more use cases to cater to.
The other way around is to use a page builder. This gives you control over pretty much each element, even if it is at the expense of simplicity. I've also coded themes meant for use with Visual Composer, and in some cases it can be daunting to create a homepage.
To keep things manageable, what we do is to provide a separate plugin that contains all the required functionality: the portfolio, testimonials, shortcodes to handle VC elements... But the problem is, if you want flexibility you WILL need some sort of tool to manage all the content.
I guess it all boils down to picking two of the following:
- Ease of Use
- Compliance with WordPress standards