The best explanation I've read is "The object to be sorted will implement IComparable while the class that is going to sort the objects will implement IComparer." (source)
If the objects you're trying to sort do not implement IComparable, you'll need to create a class that implements IComparer (and accepts those object types for comparison) and pass it to the Array.Sort() method.