потому, что первое - будет туда-сюда через регистры гонять, а второе -- будет бегать по памяти + компилятор не сможет ничего адекватно соптимизировать так как возможен алиасинг.
На счет алиасинга не факт. Ибо в аде надо явно указывать, что тип aliased.
А в С/С++ да, так и было бы.