It was also abstract for me in which can trace would be superior/more useful than scripting. I finally found an example in my code
import torch
from torch import nn


class MyModule(nn.Module):
    def __init__(self, return_b=False):
        super().__init__()
        self.return_b = return_b

    def forward(self, x):
        a = x + 2
        if self.return_b:
            b = x + 3
            return a, b
        return a


model = MyModule(return_b=True)

# Will work
traced = torch.jit.trace(model, (torch.randn(10, ), ))

# Will fail
scripted = torch.jit.script(model)

This can easily be changed to be scriptable, but if you know the control flow is static once the model is exported, tracing will work just fine.