Using reference to head node while reversing linked list using recursion
Extra variable unnecessary

Your variable current in the first code snippet is assigned to head and never changes, so it is unnecessary.  You can just use head directly instead, as in the second code snippet.  Therefore I feel the second version is superior.

Iterative version

Consider using an iterative version to reverse the list instead of a recursive version.  An iterative solution uses \$O(1)\$ space instead of \$O(n)\$ space, and is much easier to understand as well.  All you need to do is take each element of the list and add it to the head of a new list, like this:

public static List ReverseList(List head)
{
    List newHead = null;

    while (head != null) {
        List next = head.next;

        head.next = newHead;
        newHead   = head;
        head      = next;
    }
    return newHead;
}