The point is what happens to name in the first three function calls. The answer is absolutely nothing.
name.split("");
name.reverse();
name.join("");
This says "split name, then discard the result, then reverse it and discard the result, then join it and discard the result". name never ceases to be the original string. And, crucially, reverse and join are not string functions but array functions.
Now let's look at the other calls.
var splitString = name.split("");
var reverseString = splitString.reverse();
var joinString = reverseString.join("");
return joinString;
Here you are actually using the results of the function calls. You are saying "split the name into an array of characters and call this array splitString, then reverse the array of characters and call it reverseString, then join that array together and call it joinString, then return joinString.
Note that splitString and reverseString are, technically, not strings. They are arrays, which is why join and reverse work.
The other option, of course, is to chain it:
return name.split("").reverse().join("");