Your examples are good Martian, I'll just correct what's supported and what's not.
1/ The modders can decide whether they use 8 separate images or one sheet with 8 images... both of these are 100% supported and completely equivalent from the engine's perspective.
2/ The modders cannot define more than one handSprite (instead of "they don't need to be defined", you should have said "they must not be defined"). The engine 100% does NOT support this and it will end up in random unpredictable behavior depending on the version of yaml-cpp library used, version of the operating system, etc. The engine will only ever read one of these values, and we cannot guarantee whether it will be the first one, the last one or something inbetween.
We have seen this issue many times and it's only a matter of time until it fails also for Zeta.
Also, it's not even a requirement of OpenXcom, it's a requirement of YAML specification.
Quoting from here:
https://yaml.org/spec/1.2.2/#mapping The content of a
mapping node is an unordered set of
key/value node
pairs, with the restriction that each of the keys is
unique.