Although its from 2011, I was facing a large problem with Primefaces, as I use listboxes extensively.
When I load items from a database in order to populate many listboxes, they werent scrolled by default.
I fixed this by creating a JavaScript function.
//This function is used in primefaces listboxes with many items (which doesnt use the HTML tag 'option value="XXX" selected'). So, by default, if the current selected item is out of view, like near the bottom end, the scroll doesnt execute at all.
In order to use the function below, you need to put a javascript call in your listbox, like oncomplete="autoScrollListBox('#form\:lixtboxID');"
You can customize this function to traverse/loop through other lists, like dataTables or customized ui-******-***** names (just change them below).
function autoScrollListBox(id) {
var listContainer=id+' .ui-selectlistbox-listcontainer';
var listContainerList=id+' .ui-selectlistbox-listcontainer .ui-selectlistbox-list';
var listTop = $(listContainerList).offset().top;
var selectedContainer=id+ ' .ui-state-highlight';
var selectedOptionTop =$(id+' .ui-state-highlight').offset().top;
$(listContainer).animate( {scrollTop:selectedOptionTop-listTop});
}