Does your ItemsControl's ScrollViewer have content scrolling Set?
Edit 2: As Dan meantioned, it appears as soon as you try to get smooth scrolling, you lose Virtualization. I'm not sure what your requirements are, but a potential workaround might be something like the following:
<Window x:Class="TestApp11.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
xmlns:l="clr-namespace:TestApp11"
Title="Window1" Height="200" Width="200">
<Grid>
<ItemsControl>
<ItemsControl.Template>
<ControlTemplate>
<ScrollViewer CanContentScroll="True" VirtualizingStackPanel.IsVirtualizing="True" VirtualizingStackPanel.VirtualizationMode="Recycling">
<ItemsPresenter />
</ScrollViewer>
</ControlTemplate>
</ItemsControl.Template>
<ItemsControl.ItemTemplate>
<DataTemplate DataType="{x:Type ListBoxItem}">
<ScrollViewer ScrollViewer.VerticalScrollBarVisibility="Auto" MaxHeight="160">
<Border Height="200" Width="140" BorderBrush="Red" BorderThickness="10" Margin="1" Background="Blue" />
</ScrollViewer>
</DataTemplate>
</ItemsControl.ItemTemplate>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel VirtualizingStackPanel.VirtualizationMode="Recycling" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ContentElement />
<ContentElement />
<ContentElement />
<ContentElement />
<ContentElement />
<ContentElement />
<ContentElement />
<ContentElement />
<ContentElement />
<ContentElement />
<ContentElement />
<ContentElement />
<ContentElement />
<ContentElement />
<ContentElement />
<ContentElement />
<ContentElement />
</ItemsControl>
</Grid>
</Window>
Essentially, you can have the ItemTemplate wrap your UserControl Items inside a ScrollViewer. I didn't show it in my example, but you could bind the MaxHeight of the ScrollViewer (inside the ItemTemplate) to the the Height of your viewable area, and then the vertical scroll bar will only show up if your UserControl is too big to fit in the screen.
I can see where this might be too ugly of a solution to give to a customer however, in which case I think the only option is to go the route suggested by Dan.