For your first question, yes - you should definitely create separate event programs for every type of activity at your event. We do this all of the time. It's necessary not only for accurate reporting purposes, but it's also easier to focus on the specific activities, assets, and smart campaigns for each event activity. For example, if you build everything in one program and one of your activities achieves "success" (e.g., attends a client party), then all of your activities will have achieved success. Regardless if it's an event or specific content on your website - it's a best practice to create a separate program for each of these.
With regards to the appropriate channels to support each of these event programs - we have two types of channels: one for tradeshow booth visits and another for actual events that require form registration (executive breakfast, client cocktail reception, panel discussion, client dinner, etc.) - this is our roadshow channel. Also, our roadshow channel is built to support multiple ways a user can register for an event: traditional registration, RSVP registration (where a single click confirms your registration without filling out a form), and a workflow to support "approval" registration (where a member of our marketing team must first approve the registration before they become registered):
Tradeshow (booth visits):

Roadshow:

Just remember, in order to run proper reporting you must move leads into the appropriate program statuses based on specific behavior (using smart campaigns). Here's what a typical smart campaign (flow steps) looks for our traditional event registration:

Hope this helps!