По классам знакомая история. При аякс-запросе если что-то и грузится, то только дефолтное. Я ужа давно выношу кастомную разметку паджинации в отдельный файл theme_name.rc.pagination.php:
<?php
include_once cot_incfile('icons', 'plug', 'resources');
$R['link_pagenav_current'] = '<li class="page-item active"><a href="{$url}" class="page-link {$class}" {$rel}>{$num}</a></li>';
$R['link_pagenav_first'] = '<li class="page-item first"><a href="{$url}" class="page-link {$class}" {$rel}>' . Cot::$R['icon-arrow-left'] . '</a></li>';
$R['link_pagenav_prev'] = '<li class="page-item"><a href="{$url}" class="page-link {$class}" {$rel}>' . Cot::$R['icon-chevron-left'] . '</a></li>';
$R['link_pagenav_main'] = '<li class="page-item"><a href="{$url}" class="page-link {$class}" {$rel}>{$num}</a></li>';
$R['link_pagenav_next'] = '<li class="page-item"><a href="{$url}" class="page-link {$class}" {$rel}>' . Cot::$R['icon-chevron-right'] . '</a></li>';
$R['link_pagenav_last'] = '<li class="page-item last"><a href="{$url}" class="page-link {$class}" {$rel}>' . Cot::$R['icon-arrow-right'] . '</a></li>';
$R['link_pagenav_gap'] = '<li class="page-item disabled"><span class="page-link">...</span></li>';
И гружу его из theme_name.php или из аякс-частей:
require_once cot_incfile($theme, 'theme', 'rc.pagination');
Это из сниппета выше ^^^. Ну и, при необходимости, библиотеку иконок.
По кнопке "Последняя": она у меня при аяксовании работает как "Следующая страница". Тикет.
По поводу скролла не знаю, надо посмотреть. Но, думаю, решаемо)