When I press f12 on the ArrayList keyword to go to metadata generated from vs2008, I found that the generated class declaration as follows
public class Array
From MSDN....
If a class implements two interfaces that contain a member with the same signature, then implementing that member on the class will cause both interfaces to use that member as their implementation.
Explicit implementation is also used to resolve cases where two interfaces each declare different members of the same name such as a property and a method: