Когда новое сообщение получено, сначала проверьте, равна ли текущая позиция прокрутки scrollHeight (или, возможно, в пределах небольшого процента от scrollHeight, для случаев, когда пользователь не прокрутил до конца, но это незаметно).
Если это так, просто добавьте сообщение и установите scrollTop = scrollHeight;
Если нет, то оставьте его в покое.