This was an intentional change/bug fix. Prior to R2015b, there was an inconsistency in the MATLAB indexing behavior - if you try your experiment in R2015a, but with the value of "a" being stored in a field of a struct, or an element of a cell, you'd get a different answer:
>> s.a = 1:10
a: [1 2 3 4 5 6 7 8 9 10]
>> b=reshape(4:6, 1, 1, );
4 5 6
It didn't seem reasonable that the same value could be indexed by the same index, but give different results depending on where the value came from. So we changed it to give the same result.
The rule that we apply is, for an expression R(I) where R and I both have only one non-singleton dimension, then the dimensions of the result have the length of I, and the orientation of R.