Yes, the use of a script to loop through a set of Contacts records, creating an attendance record for each in the Join table, linking them all to the same event record would seem to be the best approach.
You don't indicate how you would select your group of contacts for that. I will assume that you have performed a find to locate those contacts on your contacts layout just before running the following script. You would also need to have specified the contact ID in a field on your contacts layout. I'll name that field, Contacts::gSelectedEvent. I will also assume that gSelectedEvent has global storage specified as that makes the script a bit simpler to create.
#Should be performed from the contacts layout after pulling up a found set of contacts and selecting an event to which to assign them
Go To Record/Request/Page [first]
Set Variable [$ContactID ; value: contacts::ContactID ]
Go To Layout [Attendance]
Set Field [Attendance::ContactID ; $ContactID]
Set Field [Attendance::EventID ; Contacts::gSelectedEvent //this step only works if gSelectedEvent has global storage specified]
Go To Layout [Contacts]
Go To Record/Request/Page [next ; exist after last]
Note that this script does not check to see if the contact has already been linked to the selected event. If this is a possibility, a test to check for the existance of such a record in attendance would be needed to keep from adding an extra record.
Linking contacts to an event can also be done from what looks like a group of check boxes inside a portal of contacts. Portal filtering can be set up so that the user can pull up different groups of contacts. You can then click a check box in this portal to create a record in attendance--selecting that specific contact for the specified event.
You can find an example of that approach (but without the portal filtering) in this demo file that, coincidentally, happens to demo linking events and contacts in a many to many relationship: http://www.4shared.com/file/dZ0bjclw/ManyToManywDemoWExtras.html