I did notice myself that the two-space indentation for blocks that are part of a list element are reserved and also that one can do what you are suggesting here to keep the code-block as part of the list item while at the same time not get those two extra spaces. (By the way, I don't like that work-around.)
However for me that's what happened for example blocks only. For source blocks I got an additional five spaces, for which I found no explanation. (The only indentation in the Org source before the code-block lines are the two part-of-a-list-element spaces.)