Why won't my arrow gain an objective?

What you need to do is have an extra scoreboard command (Warrow) and then go from there.

Put the command execute @a[team=Shadow_mage] ~ ~ ~ scoreboard players set @e[type=Arrow,r=2] Sarrow 1 into a repeating command block with the following commands in order into 3 chain command blocks after it:

/scoreboard players set @e[type=Arrow,score_Sarrow_min=1,score_Sarrow=1] Warrow 1 {inGround:1b}

execute @e[type=Arrow,score_Warrow_min=1,score_Warrow=1] ~ ~ ~ summon Wither ~ ~ ~

kill @e[type=Arrow,score_Warrow_min=1,score_Warrow=1]

The first command finds out which arrows are shot by team Shadow_mage (or near them, unfortunately), and sets their score of Sarrow to 1, then the second command gives those arrows a score of 1 in Warrow when they hit the ground, the third command summons the Wither, and the last command kills the arrow to stop it from constantly summoning Withers