Для того чтобы понять причину дергания, поставьте большое время анимации перехода, секунд 10.
Когда станет понятно, придет логический вывод — возвращать скроллбар и обнулять марджин у боди нужно по окончании анимации.
Окончание анимации можно отследить по событию transitionend (со всеми префиксами, если требуется)