Selecting a node of a singly-linked list such that the probability of each node being selected is equal
You are absolutely right.

Part of the problem with your friend's solution is that, when he instructs you to make a random choice (in line 3), he did not specify what probability you should use.  It's his job to completely specify the algorithm, and not omit details like that.  If we choose uniformly at random from the two options, then the algorithm does not work, for the reasons you describe.

It is possible to repair the algorithm by choosing appropriate probabilities at each iteration, but doing this right requires some care.

The standard solution to this is reservoir sampling.  (See also Reservoir Sampling - Sampling from a stream of elements for another description of the same algorithm.)
You can view reservoir sampling as an instance of your friend's algorithm, but with the probabilities for each random choice specified fully and worked out carefully so that the algorithm does meet the requirements.