Memoization это примерно вот такое:
@my_var ||= do_complex_stuff()
И, соответственно, если создаются разные потоки
Thread.new {} и там задействуется эта переменная, то в ряде случаев результаты могут быть совершенно непредсказуемые, особенно, если потоки эту переменную модифицируют. Я вот уже на это только что напоролся