That seems rather wordy to me. Can we get anywhere starting with
a `isSuffixOf` b = a `elem` tails b
and transforming? I’m not awake enough to the efficiency
implications, but
a `isSuffixOf` b = a `elem` (take 1 $ dropWhile (longerThan a) $ tails b)
longerThan _ [] = False
longerThan [] _ = True
longerThan (_:a) (_:b) = longerThan a b
looks plausible.