If we don't add a register count to vkd3d_shader_signature_element then API users can't specify SM 6 signatures with it, because they contain a register count ('row count' in the docs but it amounts to the same).
Sure, it probably makes sense for there to be some way to return complete information for sm6 input signatures (though note that e.g. D3D12_SIGNATURE_PARAMETER_DESC doesn't appear to include this either); we just can't do it by changing the existing vkd3d_shader_signature_element structure because that breaks the ABI. Perhaps most notably because the vkd3d_shader_signature structure contains an array of those.
The location for the normalisation is debatable. Henri and I agreed spirv.c is probably the best place because these changes are intended to make emitting SPIR-V easier. It can also be argued that since the SM 6 parser naturally emits in this form, except for one or two fixups, it's not all that related to SPIR-V.
Right, we may change our mind about this at some point in the future. For the moment though, one of the main considerations is that we'd like to preserve the original structure long enough for the d3d-asm target to be able to output it.