Analyzing a snippet of code out of context has little value and often leads to improper conclusions. In this code creating a new matrix takes the majority of the time. I believe that the matrix operation is doing a better job of reusing the existing variable that is going out of scope. When attempting to find the fastest way to do something don't try to break it down line by line, look at a useful block of code and think about how to make that faster.
The fastest way to do this by far is with direct indexing and to reuse the matrix but that may not be representative of the final requirements:
If the comment on the line A3= is removed and similar lines are added to the other loops then direct assignment seems to be half way between concatenation and the matrix operations.
The version of MATLAB used for testing this also make a significant difference. Micro optimizing based on the results of a command line or script test with one version of matlab is a particularly bad idea.