OK, think I've found the conflict that makes the stream appear 'letterboxed'.
Previously in OctoPrint, the stream ratio was set using padding values, so a 16/9 stream used 56.25% padding to make the container the right size. I'll be honest, the styling and handling of webcam rotation really annoyed me when I made the 'camera streamer control' plugin, there's a lot of complexity from how the layout had grown up. UI customizer also set 56.25% padding on the webcam, but this was fine since both were the same & OctoPrint's number was used in preference.
OctoPrint has since migrated to use a more intuitive aspect-ratio
property, available in more modern browsers than (most likely) 10 years ago when the UI was first built. But this causes a conflict with UIC, which still tries to apply 56.25% padding to the container, so we get a double-whammy of making the box really long. If you remove this, for some reason UIC then tries to apply padding-bottom: 100%
which makes it even longer. Removing both resolves the issue.
OctoPrint's commit that changed how it worked:
The number of styles that UIC tries to override is huge, so this type of issue is almost always going to happen. I don't think that OctoPrint should try and restrict changes to individual CSS properties & CSS structure, so it I'd like to say it's the plugin's end to fix. I don't think there's an error in OctoPrint's CSS, just the change of properties has led to it being applied twice.