A) Nel primo caso hai detto bene, si tratta di una proprietà, che per una classe come Array non può essere confusa.
Mentre nel secondo caso, essendo XMLList una classe che "porta" al suo interno i nodi di un listato xml, non consentirebbe il caso di sovrascrittura se un nodo si chiamasse <length>, il chè creerebbe un po' di magagne da parte del player per l'interpretazione della struttura xml passata all'XMLList, per questo è stato scelto di definire length() come metodo invece che come proprietà.

B) In quel caso specifico, quando non ci sono parametri da passare alla classe, per il parser non fa differenza che le parentesi ci siano o no, basta il new a stabilire che si sta creando una nuova istanza di quella classe.