Best practice: Multiple event types or custom data fields?
For your reporting perspective, it'll be basically the same.  However, the two options would make your registration process very different.  This should guide your decision.

If you have a "one-room schoolhouse" model for your classes where one session includes advanced students taking it as Basketweaving 103 as well as new folks registered as Basketweaving 101, the participant custom field would allow for them to choose which one they're registering for.  From a logistical perspective, having a single event would make it easier to set a cap on total enrollment, see the full roster, and only have to set the location and time once.

On the other hand, if you have Basketweaving 101 on Tuesday evenings, 102 on Wednesday evenings, and 103 on Saturday mornings, perhaps with different instructors, you'll want completely separate events.  You could set up event types for each, or you could have a single event type for all basketweaving and an event custom field for course number.  If you have a dozen or more separate courses, you'll probably want to put the course number in an event custom field so you don't have an overwhelming number of event types.

You should be aware that if site visitors have the ability to view event custom fields, the custom field is displayed on the event info page.