You are correct in that “subset” of case where the user explicitly requested to store in even less bits than usual then it is stored as 24 bits with the extra dropped bits being still saved by compression (since they are zeros). The default for Double32_t is different than this case and is indeed stored in 32 bits.
I do not find this clear, either. In WriteFloat16, it says also:
This is one of the non-default subcase …