you could use a repeating command block that has this command:
/execute @e[type=snowball] ~ ~ ~ detect ~ ~-1 ~ [block ground is made of] [tile data] /summon lightning_bolt ~ ~ ~

then in a attached chain command block put this: execute @e[type=lightning_bolt] ~ ~ ~ /summon ender_crystal

then add a final chain command block that does this /execute @e[type=ender_crystal] ~ ~ ~ /summon arrow ~ ~0.5 ~ then you should get a near instant explosion but you would also want another command to kill the snowball after impact, best using a conditional chain command block