In reply to CW.

Yeah, widgets and nav menus were always an issue. The way core handled those made it impossible for plugins to break them away from the edit_theme_options cap. I know there is a years-old ticket out there for this. Not worth digging up or exploring at this point.

As for FSE, it's all tied back into the edit_theme_options cap. This is hardcoded for the add_menu_page() call for adding the Site Editor screen. All of the caps for the templates, template parts, and global styles post types look to be mapped to edit_theme_options too.

Presumably a role/cap plugin could unhook the Site Editor screen, re-add it with a custom cap, and provide a full suite of caps for the post types.

I haven't dug under the hood much more than that. There may be problem areas that I'm unaware of.