It's an intentional choice. The idea is that default arguments are more like part of the implementation of the method. Evaluating them after the formal evaluation of the explicit arguments helps to create a firmer split between things that are evaluated on behalf of the caller and things that are evaluated on behalf of the callee. For example, it makes it easier to refactor a default argument into an overload and vice-versa.
It also very intentionally prevents APIs from doing shortsighted things like putting a likely-to-stay-defaulted parameter at the start of the parameter list with the idea that it will have side-effects that affect the evaluation of the rest of the arguments.