For the cleanest separation between the Main and Sub View/Controller, the SubView/SubController combination should be unaware of the existence of the MainView and MainController. That way you leave open the possibility to re-use the SubView/SubController elsewhere in the application.
There are different ways to do the rendering of sub-views, each with advantages and disadvantages.
The most important thing to keep in mind is that if you are generating your HTML on the server, then the View components should not know (nor care) if their output is sent directly to the client's browser or if it will be embedded in a larger view.
You could also say that every View is ultimately embedded within a master-View that only tags on the HTML header and body elements.
Then you can either let the Controller components render their sub-Views or you can do that in the View components.
My preference is to do it in the View, as it is all display related, which is the responsibility of the View components of MVC. On the other hand, that results in quite a bit of programming logic in the View, which many are not really comfortable with and which is not that well supported by the templating engines that are commonly used for generating views.