т.к. вы даёте меню позиционирование fixed, оно выпадает из потока, и все остальные блоки сдвигаются вверх (и наоборот, при скролле вверх блок возвращается, и всё сдвигается вниз). Соответственно, в это время меняется и значение scrollTop - только значение scrollTop достигло меньше 100, там появляется блок и scrollTop снова становится больше 100, и так без конца.
Тут надо на месте менюхи оставить пространство, соответствующее его высоте. Задайте при фиксации меню родительскому тегу паддинг-топ высотой в меню. А при возвращении уберите. Тогда всё будет плавно и ничего не будет сдвигаться и прыгать.