The comparison in that article isn't between two simple binding operations, those measurements refer to a scenario in which you add a single item to a WPF ListBox that is already bound to either a List<T> or an ObservableCollection<T>.
As the author remarks:
  ...the CLR List<T> object 
  does not automatically raise a
  collection changed event. In order to
  get the ListBox to pick up the
  changes, you would have to recreate
  your list of employees and re-attach
  it to the ItemsSource property of the
  ListBox. While this solution works, it
  introduces a huge performance impact.
  Each time you reassign the ItemsSource
  of ListBox to a new object, the
  ListBox first throws away its previous
  items and regenerates its entire list.
This explains the performance difference. Even though ObservableCollection<T> is backed by a List<T>, it implements the INotifyCollectionChanged interface, which renders all that extra processing unnecessary.