First, having four different configurations (arrays vs. collections x model values vs. passed in values) makes it difficult to make changes while preserving consistency.  Second, and I haven't helped, it's quite hard to analyze the interaction of data-binding at the checkbox and checkbox group levels.  Third, the use of truthy conditionals in the checkbox code makes it impossible to generalize either class to handle tri-state checkboxes without auditing all uses in the codebase.