If it has to be done in SQL, it seems complicated. For example:
;
with Q as
(
select a.Code, vl.a as vla, vl.b as vlb, vr.a as vra, vr.b as vrb
from #A a
inner join #B b on b.Code=a.Code
cross apply (values (concat(a.Scripting, ' '), concat(b.Scripting, ' '))) t(a, b)
cross apply (values (charindex('Linked on ', t.a), charindex('Linked on ', t.b))) sl(a, b)
cross apply (values (charindex(' ', t.a, sl.a + len('Linked on ') + 1), charindex(' ', t.b, sl.b + len('Linked on ') + 1))) el(a, b)
cross apply (values (substring(t.a, sl.a, el.a - sl.a), substring(t.b, sl.b, el.b - sl.b))) vl(a, b)
cross apply (values (charindex('reference-', t.a), charindex('reference-', t.b))) sr(a, b)
cross apply (values (charindex(' ', t.a, sr.a + len('reference-') + 1), charindex(' ', t.b, sr.b + len('reference-') + 1))) er(a, b)
cross apply (values (substring(t.a, sr.a, er.a - sr.a), substring(t.b, sr.b, er.b - sr.b))) vr(a, b)
)
select Code, 'No difference' as Scripting, '-' as Difference_A, '-' as Difference_B
from Q
where vla = q.vlb and vra = vrb
union all
select Code, 'Difference', vla, vlb
from Q
where vla <> vlb
union all
select Code, 'Difference', vra, vrb
from Q
where vra <> vrb
order by Code