I'd guess that with something like a sprite (which is two triangles) the overhead from passing a second stream in for all the positions would be no better, or worse, than just rendering the triangles. Not to mention now you have a second code branch that only works on SM3.0 meaning you have more to maintain, bug test, and worry about breaking. It's probably just the easiest and safest bet for them to just stick with one version that works across all supported machines.
But now that they've given you the shader, you can definitely write your own SpriteBatch to take advantage of anything you want. ;)