This doesn't look harmful, but why do we force inputs to have 4 components, even if not in the case of vertex shaders?
Same answer as always: that's how native does it :-)
Which is to say, for vertex shaders, inputs are declared with an .xyzw writemask, and for pixel shaders, they're declared with a writemask corresponding to the actual type. We could potentially deal with this in the sm1 backend, by e.g. writing an .xyzw writemask regardless of what the actual type is.