As you conjecture in the comments, I also think the two presentations are isomorphic in the "nice enough" case, so I would say this is a question of usage. The exact definitional behaviour of the two definitions will probably differ slightly on open terms, but I can't say which one is best. In any case this is probably quite limited, because I think the pseudo-constructor and pseudo-induction principle you get for the recursive type satisfy the definitional β-rules of the inductive variant, or at least this is the case for vectors.
The first point, maybe not so obvious, but often relevant, is that the inductive definition is, I believe, clearer. In particular, if you have a complicated indexed datatype, then presenting it solely as an inductive fixed point might risk people getting suspicious, and/or taking them a bit more energy to understand what you mean. I would say the indexed definition is a better specification. But then maybe it is because I have been bred these since forever and this is just Stockholm syndrome.
The second is that taking one or the other presentation can have subtle meta-theoretic consequence. A good example of this are inductive definitionally irrelevant propositions. In the SProp paper, they give a criterion for when a proposition can be safely eliminated to SProp back to type, which basically amounts to saying it can be expressed as a fixed point (btw, the paper also contains a pretty interesting description of when this is possible, based on Jesper's earlier work on pattern-matching compilation).
The third, and maybe most important, is how you reason with these things. This is basically a trade-off: the inductive definition gives you "for free" an induction principle, but you have to use it to prove inversion principles (eg. for vectors, the fact that any v : Vec A (S n)
can only be some cons a v'
). In Coq, you have tactics for this, and in Agda fancy pattern-matching does a similar job. For the fixed point definition, things are turned around: you have the inversion for free (because this is basically the definition of the type), but have to prove induction. I suspect in Agda this is subpar, because working with induction principles rather than the primitive equations presentation is a pain, but in Coq this is not so bad.
But at the end of the day, when working heavily with fancy inductive datatypes, I often end up re-defining custom induction or inversion principles to better fit my needs of the moment. So whether the original type was defined as inductive or recursive makes relatively little difference, because I will end up proving the structure that is not given to me primitively, and using both. Although I generally phrase inversion principles in a slightly different way than the full recursive definition, as explained in the other thread.