Truth be told, going back to a bit of megaman, I highly prefer Shovel Knight's combat design to that of megaman's.
Let's look at Megaman m buster-only, and Shovel Knight shovel-only.
Both megaman and Shovel Knight share the trait of fighting bosses in a closed off room. This is hardly unique to either, but serves as a point of comparison.
When you are backed into a corner in megaman, you essentially have 3 options. Shoot in attempt to kill the boss before it can kill you (this can be done in conjunction with the other two actions as well), wait for the boss to do a high jump so you can pass under safely, or attempt to jump over, which usually fails given megaman's jump height and the size of the average boss. So we determined only one method that can prevent you from taking damage, and that method is dependent on the AI.
Now let's look at shovel knight. In a similar scenario, you again have 3 actions: attack, jump over, or wait for the boss to give an opening. However, jumping is no longer unhelpful in this scenario, as shovel dropping lets you get over the opponent safely. Attacking, if timed right, is also useful: it can prevent you from taking contact damage with the boss for a very brief period, and can give you an opportunity to pass.
Admittedly, bosses in Shovel Knight are far less likely to stay in one place for long so the added options aren't hugely important, but I think that letting the player have more control over getting themselves out of a sticky situation is better game design.