sample = (\this->(\x->x))
Then, (Y sample) can reduce as follows:
1: (Y sample)
2: (sample (Y sample))
3: ((\this->(\x->x)) (Y sample))
4: (\x->x)
Now, if your evaluation strategy required evaluating arguments to final form before applying an operator to them, then line 2 would expand forever:
2: (sample (Y sample))
3: (sample (sample (Y sample)))
4: (sample (sample (sample (Y sample))))
... And so on.
However, neither call-by-need (lazy) nor call-by-name evaluation strategies require evaluating an argument before applying some operator to it. Thus, in languages that support either of those evaluation strategies, the operator can be evaluated to the point where it throws away the argument, and the argument need never be evaluated.
This is a contrived example but real world recursion works for the same reason; at some point in the evaluation of the function, it no longer needs to be applied recursively, and once it reaches that base case, the recursive function can be discarded.