I think your solution is fine, but if you really want a recursive function, then the format of the function below is typical for functional programming:
def check_letters(compare_to, lst):
if len(lst) == 0:
return True
else:
if lst[0] in compare_to:
return check_letters(compare_to, lst[1:]) # recursive step
else:
return False
if check_letters(userInput, letters):
...
So the idea is to check the "head" of the list (0th element) and if it meets your predicate, you continue the recursion with the "tail" of the list.
So each recursive step checks the first element in the list and then forwards the rest of the list "down" the recursion. Here I use slicing:
l = [1,2,3]
print(l[1:]) # create a new list from index 1
# Outputs: [2,3]
Since python is zero-indexed, 1 means the second element.
To support repeated letters as pointed out by @cdlane, the recursion can pass along the input with the occurence replaced:
return check_letters(compare_to.replace(lst[0], "", 1), lst[1:]) # recursive step