Disclosure: This is probably insane.
That said, here's what I did to "solve" the problem utilizing P&T's Iterate plugin and Stash:
<ul class="item-list-nav">
{exp:iterate alpha='a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z' parse='inward'}
<li class="ig-{alpha}"><a href="#ig-{alpha}">{alpha}</a></li>
{/exp:iterate}
</ul>
{exp:iterate alpha='a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z' parse='inward'}
<div class="item-list-group" id="ig-{alpha}"><a name="ig-{alpha}"></a>
<span class="item-list-group-title">{alpha}</span>
<ul>
{exp:stash:get_list name='service_list' match='#^(?i){alpha}#' against='item_title'}
<li><a href="{item_url}">{item_title}</a></li>
{/exp:stash:get_list}
</ul>
</div>
{/exp:iterate}
Insane? Maybe. But does it work? You bet.