Ну, разница в производительности на самом деле не имеет значения, так как две линии делают совершенно разные вещи. DataContext - это объект, из которого взяты локальные привязки данных ItemsControl:
<ItemsControl Width={Binding Length} />
Примет свойство Length объекта, заданного как DataContext, и свяжет его со свойством зависимости Width элемента ItemsControl.
С другой стороны, ItemSource - это объект IEnumerable, который должен быть повторен для создания дочерних элементов внутри элемента управления. (Каждый объект внутри ItemSource станет DataContext созданного им дочернего элемента)