( and you could even move your reversal outside the recursion – something like the sketch below)
-- offsets :: String -> String -> [Int]
on offsets(needle, haystack)
set rn to (reverse of characters of needle) as text
script go
on |λ|(hay)
set i to offset of rn in hay
if 0 ≠ i then
|λ|(text (1 + i) thru -1 of hay) & ¬
((length of hay) - (i + 1))
else
{}
end if
end |λ|
end script
go's |λ|((reverse of characters of haystack) as text)
end offsets
on run
offsets("san", "misanthropic sandalwood partisans")
end run