How can I present an array of booleans in a panel?
It works pretty well to use BoolVectorProperty and then in the UI to address each element by specifying the index and overriding the (empty) text.  I learned this reading http://blenderartists.org/forum/archive/index.php/t-264624.html . 

ex: 

myList = ["cat", "rabbit", "fox"]

class SpriteSheetProperties(bpy.types.PropertyGroup):
    sets = bpy.props.BoolVectorProperty(
        name = "Sets",
        description = "Which animal sets to render",
        size = len(SETS),)

class SpritifyPanel(bpy.types.Panel):
    def draw(self, context):
        layout = self.layout

        box = layout.box()
        split = box.split(.25)
        column = split.column()
        for i,set in enumerate(SETS):
            column.row().prop(context.scene.spritesheet, 'sets', index=i, text=set)


Doing this over a few different list, I now have this nice box: