I think the real question you ask is why this is not working:
In[15]:= {1,2,3,4,5}[[{{1,2,3},{2,3,4,5}}]] During evaluation of In[15]:= Part::pspec: Part specification {{1,2,3},{2,3,4,5}} is neither an integer nor a list of integers. >> Out[15]= {1,2,3,4,5}[[{{1,2,3},{2,3,4,5}}]]
because Span seems to be a higher-level shell implemented on top of Part (this assumption). The same question was asked recently at MathGroup. There was no satisfactory answer, and I feel that from the point of view of the user, this is simply an omission - I see no fundamental reason why this should not work. Moreover, this function will greatly facilitate life in some cases.
From a technical / implementation point of view, I can assume that this would run counter to the extended Part assignment function. In particular, we know that Part can be used not only to extract elements, but also for efficient element assignments, where whole regular structures (rectangular submatrices) can be assigned at the same time, for example
In[18]:= a = Table[i+j,{i,2},{j,4}] Out[18]= {{2,3,4,5},{3,4,5,6}} In[21]:= a[[All,{2,3}]] = {{7,8},{9,10}}; a Out[22]= {{2,7,8,5},{3,9,10,6}}
If Part allows the specification of nested lists for positions, it should immediately provide assignment functionality for non-rectangular substructures, or it will become much less understandable for use (since there will be corner cases, etc.). And I suspect the latter is not easy to implement, since the extended Part assignment function is probably based directly on the memory layout of the array. This will also create problems with packed arrays (for the same reason - they cannot be torn, they must be rectangular). Perhaps if Mathematica would have a very efficient array structure of rusty arrays (like linked lists), and that could be solved.
So to summarize: it seems that from the implementation point of view, such new functionality will present several complex problems that may explain why this has not been done (again, this is an assumption). Also note that to extract an element, you can use Extract with a prepared list of positions to extract arbitrary substructures, and this will be almost as effective as using Part .