Serve the version of the page that is appropriate for the device that is requesting it.
Whether you are achieving this through a responsive design or a redirect to a separate mobile site, serve the version that is optimized for the viewing platform.
I would not first prompt the user to make a choice before loading the content.
When you are on a responsive site, it does not prompt the user, so why should a mobile redirect?
That said, always give the option for the user to switch to the desktop version, and try to respect that preference as best you can. Make the toggle easy to access (i.e. not in tiny text at the very bottom of the page).
Lastly, I would definitely look at analytics over time to see if particular areas of your site have a higher rate of users "downgrading" from mobile to desktop. That may indicate a problem with a particular type of content/template.