Alternative GNU awk for the word-boundries ("\<" and "\>"):
gawkawk 'BEGIN{ FS=OFS="\t" }
NR==FNR{ mutations[$1] =$2; next }
FNR>1 {
split($3, muts, "," );
for(x in muts) {
if (gsub( "\\<"muts[x]"\\>",?"muts[x]",?", "", mutations[$2])>0) delete muts[x] }
}
FNR==1 { $4="missing_mutation"; $5="remaining_mutation" }
{ printf ("%s", $0 OFS mutations[$2] OFS );
for(r in muts) {
if(muts[r] ~/^[Ss]/) printf("%s", sep muts[r]); sep="," }
print ""; sep=""
}' fileB fileA