There is no "limitation" or "tradeoff".
The point is, we express ideas at a given level of abstraction.
The "forall" is for ranging over the values in a collection.
The for(int i = 0; i < n; i++) etc is for ranging over numbers, that sometimes happen to be the valid indices in some array. Quite a different matter.
Use the appropriate level of ...