Recursive `offset` handler (AppleScript)

( 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