It looks like you're attempting to compare apples to oranges...
IOrderedEnumerable<string> sortedFruits2 =
fruits.OrderBy(fruit => fruit.Length);
Is ordering the array by string length, and I assume is using a normal string comparison (ie alphabetical) in a tie break.
IOrderedEnumerable<string> sortedFruits3 =
sortedFruits2.CreateOrderedEnumerable<string>(
fruit => fruit,
Comparer<string>.Default, false);
Your ordering the strings using the default comparison so you get an alphabetical ordering.