I've a confession. I have an issue with how this match-up is often analysed because often it's analysed on the precedent that if you understand Sonic's basic options he becomes predictable. However, at high level play Sonic is one of the most unpredictable characters in the game in neutral. Prior to becoming a tournament player I committed quite a lot of time into Sonic in Brawl and a almost of his options in neutral have carried over though the character is overall more powerful (I also main him in PM, but this point is irrelevant as Smash 4 Sonic is much closer to his Brawl incarnation). The first thing we must do is analyse what exactly Sonic can do from his Side B and his Down B:
Side B
During startup/charge:
- Shield/Grab
- Continue charging
- Jump (via X/Y), retaining the current charge
- Jump Attack (via A/B), he jumps up with a hitbox and cancels his spindash, entering falling animation near the apex of the jump
- Release
During max charge (Sonic flashes briefly upon reaching max charge):
- Continue charging (indefinitely)
- Jump
- Jump Attack
- Release
During the hop after release:
- Jump (you go into the standard jumping action, allowing you to go into any aerial action afterwards barring another jump)
Down B
During startup/charge/max charge:
- Continue charging (via mashing B)
- Terminate charge (by not mashing B and just letting Sonic come to a stand still)
- Jump Attack
- Release
Both Side B and Down B
During grounded spin:
- Jump
- Turn (note that turning DOES NOT have a hitbox)
- Continue forward
During turn:
- Jump
- Continue with turn
Upon understanding the variety of options that Sonic has with his spindash, it's time to analyse what options a Sonic will tend to opt for at a high level. Sonic, despite being the fastest thing alive, plays a pretty patient game, attempting to bait his opponent with one of his many spindash tricks or mobility options and punishing them from there. A lot of his options can be pretty safe if the Sonic knows how to make good use of them and keep himself unpredictable, conditioning an opponent into thinking he'll opt for a certain option and instead opting for a different one. As a Shulk, we can't allow Sonic to stay at full stage length otherwise he's just going to sit there and start spinning and whether you like it or not he's applying indirect pressure to you. One of the best things you can do in response to this however is to slowly walk up and edge your way in with your shield. Sounds crazy right? Tackling the fastest thing alive....with slow. But walking allows you to shield at any time, as opposed to having to commit to a dash first before being able to shield. Don't get too close to him of course, and always watch him and be wary of what he's doing. Edge your way into the comfort of midrange and try to stick there because as we all know the midrange is where Shulk thrives and where he succeeds over pretty much the entire cast. Upon getting into that midrange take care applying pressure. Spaced NAirs as opposed to approaching NAirs (which can easily be shield grabbed) are your friend and stuff like FAir, BAir, DTilt and FTilt are great too.
When Sonic releases a spindash from mid or close range your best option, as mentioned by Artryuu, is to hold shield as Shulk's moveset will often be too slow to actually punish from that range barring his jab (which clanks with Sonic and from there all Sonic is actually in a more favourable position due to his superior frame data). However it's easier to challenge if he releases from a distance, with a well timed short hop NAir covering pretty much all of his potential options. After you shield his spindash this is where things get a little more interesting. You see, most mediocre Sonics will almost always opt to jump and aerial upon hitting your shield, which makes people assume that Sonic is predictable. However, there are many other options that Sonic can (and a good Sonic will) opt for:
- Carry on through your shield: As mentioned before, simply make sure you're still holding your shield particularly vs Down B which will hit your shield multiple times. From here all the Sonic can do is turn, which is super easy to punish as he doesn't have a hitbox or jump where he'll be too far to try to apply any sort of pressure to you. From there you edge a little closer to him.
- Jump and aerial: The default option for a lot of Sonics. As aforementioned this option isn't too safe as you can just NAir after Sonic throws out his aerial.
- Jump and Homing Attack: As soon as you see the Homing Attack initiate you have a couple of options. You could hold shield but it means that from the HA and his spins you've taken a lot of shield damage so I'd instead advise rolling towards Sonic and punishing the bounce afterwards with an attack. Due to the nature of HA, it homes in a lot better to foes moving away from Sonic than towards him. Alternatively you can spotdodge too.
- Jump and Up B: Do not act immediately out of shield as the spring will hit you. Simply respect all of it and track Sonic's landing from there. He's relatively fast in the air so you have make sure you stay on him though just out of range of his aerials so that he can't try to hit you with them upon landing. However, overall this is probably one of his safer options.
- Jump to another spindash: This option is one Sonics won't opt for as much due to the startup on his spindashes but keep an eye out for it. In this instance, just SH NAir or FAir quickly after reacting to the start of the spindash.
Beyond his spins he also has his fantastic ground speed and strong grab game, so be wary of option his grab, dash attack and pivot FTilt. Typically Sonic won't (well, more shouldn't) approach you with his SH aerials as they're pretty easy to punish for the most part due to poor range and the fact that the only one that lingers is his NAir which doesn't autocancel so it can be easily punished on landing so you can mainly concern yourself with his ground options. The hardest part of it all is trying to establish yourself into a position where you can cover multiple options at once so it's harder for him to mix you up.
I find Jump and Speed particularly useful for this matchup. Jump allows you to chase him in instances where he'd normally be pretty safe such as after an Up B and Speed allows you to close the gap and capitalise on punishes better. Essentially what you want to try to do is somewhat play his game in this match-up. You have to play it patiently yet you also need to assert yourself and apply pressure to him otherwise he'll camp and fake you out for days. You absolutely cannot be reckless or too aggressive in this match-up as Sonic's punish game is very strong and you'll not only take a ton of damage but you'll also be put into a bad position where he can put you in another mixup situation. Due to Shulk's laggy aerials and lack of air mobility alongside Sonic's immense ground speed and mobility it's easy for Sonic to punish your landings so always try to stay below him or on his level as much as possible.
As a result I do think this match-up is pretty hard for Shulk but it's certainly doable. A Sonic that knows how to use all his tools effectively can condition you into making mistakes in neutral, allowing him to get a lot of damage on you relatively easily. As a result I'd say Sonic can quite often win in the neutral, unless you force Sonic above you. Offstage you're at about he same, because while his recovery is overall better, I'd say Shulk has stronger edgeguarding options. I'd say 60:40 in Sonic's favour, maybe a little better for him but not too sure.