The historical reason for this is somewhat different from the current reasoning - previously it was to have a 'safe' screen to go back to which was always resident in memory, so that if the game had gone to a demo loop and the player touched the controller, it could instantly return to the start screen and let interaction commence with no delay.
However typically these days it serves another purpose. For recent generation consoles, the start screen is deliberately user-agnostic. Nothing on the start screen requires knowledge of which user is actively playing the game. You get to the start screen without loading any save data, and without requiring a user to be logged in. So you can get to the start screen quickly and without having to show any TCR compliant messages.
Requiring the user to press start gets you a key piece of information: which controller is the primary controller. It's not necessarily the first or only controller connected, and you might have several equally valid controllers to choose from. You don't know which one the user has actually picked up though until they've pressed a button on it. Once that controller is used, it will remain the primary controller for the rest of the gameplay session.
On XBox 360 (and most likely other consoles), finding out what the primary controller is also typically gets you another bit of information: which user is playing the game. Because each user is bound to a single controller, you know which user is playing, and from that you know which save data to load. Many / most of the content is bound to specific users, so it's important to determine who is playing the game before continuing. If no-one is logged into the console, games will typically prompt at this point for a user to log in, or ask if the player is happy to play as a 'guest', i.e. without saving (because with no user, there's nowhere to save to).
You'll also find that, typically, changing users (by signing out and back in) will cause you to return to the start screen. This is because the relevant user-specific data is loaded after this point in the game, and the start screen is the easiest point in the user interface flow where you know exactly what data is loaded (none).