Most often what I do is send the client a link....
Hi Client,
Here is a link to the hosting package you'll need:
(insert link here)
Please follow the steps to sign up, including paying for the hosting. You can register your domain at the same time, so it should be a simple one-time processes.
This hosting provider is one of the best I've found. You get unlimited email and FTP accounts, a control panel .. (etc. etc. etc.. about the account - this is done to combat the "but I heard GoDaddy is good" arguments)
By having you do this rather than myself, it ensures you get the notices about renewal or issues with the account rather than relying on me to act as a middleman to relay such information. This also ensures that you are in control of the accounts and you don't have to be concerned about unauthorized access due to users you aren't aware of.
Once you are done signing up, you'll receive a "Welcome" email from (company). Please forward that email to me. It will contain passwords and log in information I need in order to upload files and set up the web site.
Thanks!
With that, I wait for the "welcome" email.
While developing the site, I host the dev site on my servers until everything has been paid. Once payment is received, I upload everything to their hosting account.
I'd recommend not providing hosting yourself unless you don't mind being the IT person for the client and dealing with the off-hour phone calls about email not working or some other random web issue.
Moved comment to answer:
Once you start reselling hosting for clients you become IT support for them. You get calls for email problems, calls for any downtime*, calls for every little hosting issue. If that is your business model and you WANT to deal with that stuff, fine. But if you do not want to deal with all the IT support associated with hosting... simply don't have anything to do with hosting other than recommending a service.