Deserializing multiple elements from XElement
Your initial revision is fine. If you take a look at the implementation at Reference Source you'll see that the XmlReader returned by CreateReader is lightweight and that calling Dispose on it is not necessary. 



...
var customers = xml.Elements("Customers");
...


It seems a little strange that you pick elements of type "Customers" and deserialize them as Customer. They should be "Customer" in the XML if they represent a single customer each.