Все очень просто. Рассмотрим ПОСЛЕДОВАТЕЛЬНОСТЬ выполенния:
x1=3
x2=5
x1=x2
x2+=x1
Вначале имеем x1=3, x2=5.
После выполнения первого оператора получаем x1=5, x2=5.
После выполнения второго оператора получаем x1=5, x2=10.
При выполнении
x1=3
x2=5
x1, x2 = x2, x1+x2
Вначале имеем x1=3, x2=5.
Потом выполняем то, что вы написали последовательно,
x1=x2, Но до завершении этой операции результат операции сохраняется во временной переменной.
Поэтому при выполнении x2=x1+x2 в процессе используются начальные значения переменных. Результат, кстати, тоже заноситься во временную переменную.
И только при завершении всего оператора результаты из временных переменных записываются по назначению.
В итоге имеем
x1=5, x2=8
Попробуйте сравнить
x1, x2, x3 = x2, x1+x2, x1+x2+x3
и
x1=x2
x2=x1+x2
x3=x1+x2+x3
Станет понятнее.
На самом деле результат ЛЮБОГО оператора всегда сначала заноситься во временную переменную и только в момент завершения всего оператора переноситься по назначению. Но в одном случае это не влияет на результат, а в другом случае - влияет.