neeraj wrote:1. Are we using an array because that is what we know
or
2. An array is the best solution even if we had a tree structure.
I think this depends on what you are trying to do. In general, trees seem to be comfortable to users of scalar-oriented (and compiled) languages, while arrays are a more comfortable fit for "parallel" APL notation. There is probably a cross-over zone which we should investigate. But we need some real problems to solve before we can discuss about how comfortable different data structures are.
Thinking about (what I have seen of) XQuery and other tools for manipulating XML, these seem to be trying to take what I would call an "array view" of the XML, applying something similar to SQL (which is very much "an array language") to the trees :-) I think tree structures are pretty uncomfortable to work when you are trying to do any form of "analytics". You can't see the data for all the trees.
Re string manipulation: As Andy and Dan have hinted, this is on our hit list, we have some ideas that we will be playing with in 2010 / v13.