Спецификация для словаря говорит, что порядок итераций не определен. Таким образом, вы не должны зависеть от того, чтобы быть чем-либо.
Реальность такова, что если вы декомпилируете фактическую реализацию, используя что-то вроде Reflector, вы увидите, что он использует вспомогательный массив для свойств Values / Keys (с часовыми для удаленных элементов). То, как это реализовано, приводит к итерации в порядке добавления вещей. Вы просто не можете полагаться на это. Я предполагаю, что есть несколько людей, невольно зависящих от такого поведения, поэтому я сомневаюсь, что они изменят это в ближайшее время. Я все еще не хотел бы полагаться на это ни на что, кроме быстрого одноразового кода, хотя.