A EnumSettingsOption counterpart is used on native during community creation, however it's built into the community configuration screen directly since we don't use it anywhere else on native. I'm going to need something similar for selecting role permissions, so I just made a pretty clean refactor into its own component. I recall there was some talk about needing to confirm the actual designs for checked / unchecked, but for now I've just copied it straight over without any design changes.
The reason icon is an optional prop is because at the moment, the designs for role permissions don't require an icon so it made more sense to just make it optional entirely.