If an event is setup with registration fees turned on, but one of the registration options is for $0, the form still requires completion of the payment fields.
This scenario arises if there is an event for which members attend for free, but non-members must pay. It is preferred to have a single event setup, with the member ($0) and non-member ($$$) options available (rather than breaking into two separate events, one with fees, one without). But if a $0 fee option is selected, the user is still required to complete the credit card payment form (and sometimes is not able to process it because some cards don't accept a $0 charge).
A preferred long-term solution is to have control over what registration field options are available/visible based on the member status and member type.