I cannot tell you the reasons it works the way it does, but I can help you fix what is wrong. Essentially, your template is overriding your cell style.
I bet if you remove the whole template section it'll work. But, assuming you want the behavior, you'll have to add it within the control template. The binding is a little more complicated.
<DataTemplate>
<TextBlock TextWrapping="WrapWithOverflow"
TextTrimming="CharacterEllipsis" Height="Auto" Width="Auto"
Text="{Binding Text}">
<TextBlock.Style>
<Style TargetType="{x:Type TextBlock}">
<Style.Triggers>
<DataTrigger Binding="{Binding IsSelected, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type DataGridCell}}}" Value="True">
<Setter Property="Background" Value="SeaGreen" />
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
</DataTemplate>
P.S. You should be using StaticResource not DynamicResource. You don't need it here, and you're incurring a little more overhead because of it.