Arg, I’ve discovered what the silly thing I was doing wrong was. I’d failed to notice that the attachments that were working in single.php were using the default instance, called “attachments”, and the comm_event template wanted to use “my_attachments,” so what I needed to do was:
$attachments = new Attachments( 'my_attachments' );