The cleanest and most transparent thing that you can do for your customer is to have them set up their own account and register any domains under their account. The customer then grants you access to their account functions (the dreamhost panel has functionality that was created for this).
On the other hand, some developers like to just host their customers stuff via a dreamhost account belonging to the developer. I think some developers do this because they think it will create a stronger bond or more turn-key solution for the customer. Or perhaps it's an insurance policy or ransom to keep the customer.
Another "pro" for the side of having the customer create their own account is when you read the list of features for shared hosting the one thing that is not UNLIMITED is total CPU time. You might have one customer that has enough traffic to push a different customers site into error conditions.
And another... If a customer need to move to a better hosting package, it's clear who is going to pay the bill if they have their own account. Sure the shared hosting package is dirt cheap and claims to be "unlimited". Sounds like a guy like you can buy one and just keep adding websites to it, and you can. Butttttttt.... when Band X's site suddenly needs a VPS or dedicated server tho due to a huge spike in traffic things change tho. Now you would have to suddenly start billing the customer a monthly server fee. In the case of the VPS you really don't know what that will be, since memory usage may change many times during the month.
Sure its easier for the customer to divorce you if they have their own account, but if you take good care of the customer then you won't need to worry about them leaving you.
Another thing none of us like to think about, but it will happen to every site sometime: server or network breakdowns. If you're playing the game with the customers sites on your account and the server suddenly is broken etc then the customer blames you for every minute their site is down. You become the bad guy fast. On the other hand tho, think about the other way your reply to the customer could be made: "yes the host is having an issue, we have a ticket open with them." You can suddenly the the customer's ally in the problem, rather than the guy that they want to fight because they are losing money etc with the site down.
As for "which" hosting package. Start everyone with shared hosting. After that move them up to VPS or Dedicated as needed.
Another thing you can do is create affiliate or promo codes. The downside tho, is the customer won't get dreamhost's best price. Which lately is always better than what you can create promo code wise. Some customers may not care tho, the expense being slightly higher just means they are paying for 2 drips in the bucket instead one 1.