Check out MvcContrib's SubController.
Or, if it will suffice, use Html.RenderPartial or Html.RenderAction.
All you need to do is send down a list of subcontrollers (or controller/action paris) and render them. Then all you need to do is define the regions of the screen where these components are rendered.
Web Parts heavily relied on javascript to allow users to collapse and expand parts, drag and drop parts between regions and add and edit parts. All of this you will have to implement youself.