If the client is purchasing a free product or using a coupon code that brings the total down to $0.00, they're still required to choose a payment method. It would be nice if WHMCS would realize that a payment is not due and skip that section of the order form.
Take the scenario of a hosting package which usually costs $5/month, with a one time promo code making the first month free, the order total is $0.00 - and no payment is required - but what happens in month 2. You still need to know how they wish to pay. And if you didn't collect any info at the time of signup, then the customer is required to come back, login and and submit that info to you.
Of course if you have a gateway like PayPal, or 2CheckOut, etc... then the user is never sent to any gateway to actually pay so no payment is actually required.
So the question is how should this behave if the product is not always going to be free?