Conceptually And and But are just syntactic sugar for the actual step type of Given When or Then. All steps are really of one of those types. In the specflow implementation it would be possible to have different implementations for And steps which were after a Given and those after a When, where as in a language where And is a native step type this wouldn't be possible. Conversely you have to attribute an And step with two attributes to use it both after a Given and a When.
This might be a good thing or might be a bad thing. In the end I think this is just an implementation decision which is swings and roundabouts, and make little difference.