Это потому, что вы привязываете Ellipse Width к ActualHeight, и поскольку ваше окно не квадратное (но широкий прямоугольник), значение высоты больше ширины, поэтому недостаточно широкого места, чтобы поместиться в квадрат.
Чтобы исправить это, вы можете удалить Ellipse With binding
<Ellipse x:Name="outerCircle" Fill="Black"/>
<Ellipse x:Name="inCircle" Margin="5">
<Ellipse.Fill>
<ImageBrush ImageSource="{Binding Path=Tag, RelativeSource={RelativeSource TemplatedParent}}"/>
</Ellipse.Fill>
</Ellipse>
Если вам нужен квадрат, вы можете использовать Viewbox, установить некоторую высоту и ширину на сетке контейнера
<ControlTemplate x:Key="botonProducto" TargetType="{x:Type Button}">
<Grid Margin="20">
<Viewbox>
<Grid MinHeight="50" MinWidth="50">
<Ellipse x:Name="outerCircle" Fill="Black"/>
<Ellipse x:Name="inCircle" Margin="5">
<Ellipse.Fill>
<ImageBrush ImageSource="{Binding Path=Tag, RelativeSource={RelativeSource TemplatedParent}}"/>
</Ellipse.Fill>
</Ellipse>
</Grid>
</Viewbox>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="Button.IsPressed" Value="True">
<Setter Property="RenderTransform">
<Setter.Value>
<ScaleTransform ScaleX=".9" ScaleY=".9"/>
</Setter.Value>
</Setter>
<Setter Property="RenderTransformOrigin" Value=".5,.5"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>