I think it creates a dictionary of n-grams. Adjusting heuristically the probabilities the algorithm probably chooses the one with the best chances. There is probably some assumption about the fitness function that can be tuned to include more special cases.
Not knowing the algorithm I can't be sure, but I guess what it's showing is that we are usually pretty bad at generating numbers, since it's hard, for example, for each person not thinking about it, to keep the same frequency of 3-words as 000, 010, 110, 111 etc...
Your idea of using the Fibonacci series is good. I tried something similar. I tried once implementing the integer series, :-), 0, 1, 10, 11, 100, 101... and I won. Now with that I lose. So maybe the algorithm has been changed to take that into account. I tried other series and I won, but I guess it could also be because it's hard to get any significant pattern in a 100 move game when the series are complicated. It's possible, though, that the same algorithm would win against deterministic patterns if given enough time.
It would be interesting to try with prime numbers as well. It may be easily hard coded as prediction, though.