Themes always get an extra chance at the end of \Drupal\Core\Theme\Registry::processExtension() to add preprocess to everything, and then also the extra-extra processing for theme suggestions (which I think we an clean up and combine if we extend the current preprocess-collected data and combine it, but that's for D12).
Theme engines currently also looks for theme prefixed functions, Modules don't do that. This check does not support OOP and it specifically does not support LegacyHook, so it might add preprocess twice. It also doesn't deal with base themes. I think we can just remove that and see if anything breaks.
Active
11.0 🔥
theme system
Not all content is available!
It's likely this issue predates Contrib.social: some issue and comment data are missing.