In Magento the MVC concept is a little different. An honestly I like this way more than the classical one.
In Magento, controllers are very light. they only handle the request and send the response. They don't talk to the views (in most of the cases. There are cases when they do) they just load them and display them.
Also Magento does not have the restriction, that I don't understand, that views should not talk to models. For Magento views can access models.
The xml part is for extensibility. The controller only loads the set of blocks (that are basically views but in an OOP format) assigned for a specific request and displays them. Then each block does his part for retrieving and displaying data.
Using an xml makes it easy for developers to add stuff in a page.
All the layout xmls are merged into one big xml and that one is used by the controllers. The controller does not care where a block comes from. If it's in the merged xml it instantiates it and displays it.
This is a very broad topic and I could go on for a few more pages. But I won't. You can read Magento Designers Guide to get a better idea about why layout xmls are used and how to use them