The main reason for having the _Loss class is for the backward-compatibility of the reduction method.
There is nothing special about a loss compared to other nn.Module classes and I personally would think that it is good that no-one gets the idea of doing isinstance(l, Loss) anywhere because that would preclude passing in a nn.Module that does some processing and then calls loss.
Best regards
Thomas