Is there some obvious reason it shouldn't that I'm not seeing?
While we're at it, wouldn't it be nice if there were some way for me to have some existing class in an external assembly implement some interface without changing its code, a.k.a. extension interfaces a.k.a. typeclasses ...
This is an obvious reason: ICollection exists since .NET 1.0. IStructuralEquatable is new in .NET 4.
And not every collection has to be structurally equatable.
In fact, why should ICollection implement IStructuralEquatable?
While that's a nice interface, ICollection could hold any number of different types of objects. It doesn't make sense for it to implement IStructuralEquatable.
Just make a class that implements IEquatable and then reference it in the .Contains method (or wherever you're making the comparison).
Arrays have existed since .NET 1.0 too. The fact that it can hold different types of objects isn't IStructuralEquatable's problem, that's up to the IEqualityComparer implementer to deal with.
Wait, I just realized adding abstract methods to an existing interface is totally different from adding concrete methods to an existing class. Duh. Dunno what came over me there. Yeah, it's impossible to do these things for backwards compatibility reasons. Too bad, though ...