Change your for loop. You aren't doing anything with the recursive call.
def nested_join(s, L):
res = []
for i in range(len(L)):
if isinstance(L[i], str):
res.append(L[i])
else:
res.append(nested_join(s, L[i]))
return str.join(s, res)