arm32 mode is optional for armv8, not required, the assumption of all armv8 Socs will have 32bit compatibility mode is wrong in the first place.
I do not believe that Aarch32 execution state is optional in the ARMv8-A architecture specification. If you do believe so, please point me to the part in the spec, which states that Aarch32 execution state is optional.
Quick Quote from the ARMv8-A spec (chapter A1.1):
"An important feature of the Armv8 architecture is backwards compatibility, combined with the freedom for optimal implementation in a wide range of standard and more specialized use cases. The Armv8 architecture supports:
• A 64-bit Execution state, AArch64.
• A 32-bit Execution state, AArch32, that is compatible with previous versions of the Arm architecture.
Note
The AArch32 Execution state is compatible with the Armv7-A architecture profile, and enhances that profile to support some features included in the AArch64 Execution state.
Features that are optional are explicitly defined as such in this Manual."
Likewise there is also no feature-ID register (which exists for all optional features), where a SW implementation could detect the absence of Aarch32. This is considering architecture updates up to ARMv8.5-A.