It's a matter of compiler quality of implementation versus optimisation setting.
Your comment about compiling with "optimisation on" doesn't say much. Although some optimisation settings are concerned with reducing code size, it is quite common for optimisation to be concerned with other measures, such as runtime speed or even memory usage. Optimisation for runtime speed, for example, often trades off code size (e.g. amount of assembler) to achieve performance - there is no hard and fast rule requiring that, if two bits of code achieve identical output, the faster one is smaller.
The primary definition of a bug in a compiler is correctness of the result when code is compiled/linked/executed (i.e. that it produces results within constraints defined by the C++ standard). If you are using an optimisation setting concerned with minimising output code size, then the concern is one of compiler quality not of correctness.
There is no hard and fast rule about what method should be used to access elements of a vector - there are use cases. All methods are correct, if they achieve the required effect unambiguously (e.g. without exhibiting undefined behaviour). Although there are constraints on behaviour some operations (e.g. accessing an element by index is a constant time operation) most useful programs use a number of operations, and the interactions vary between implementations of the library. So if such things are really important, you need to test and pick the one that meets your requirements.
If you are using an optimisation setting that specifically is concerned with minimising code size, you may have a reportable bug. The amount that will matter to the vendor (Microsoft in your case) comes down to how important they consider that type of optimisation is to their paying customer base.
In practice, I would very rarely worry about size of emitted code from a compiler, unless storage space is at a premium. Get the code running reliably and correctly first, and then worry about whether the executable size can be reduced. An executable that is small but doesn't work as required is not particularly useful.