ESRI tech support helped me suss out our problem.
It turns out the barriers weren't the issue. Our network had a large number
of features with the Enabled field set to False. These therefore weren't
participating in the network. Any time a flag was placed on a disabled
feature, the output of the trace was empty. When using the Utility Network
toolbar or the geoprocessing tool, this showed as an empty selection.
However, when the trace is in a model, the output has to go through Collect
Values and Make Feature Layer to be accessible. When the result of the
trace was empty, the Collect Value/Make Feature Layer defaults to passing
on the whole layer. This is therefore an expected behavior. In our case,
enabling all the features (except those that truly shouldn't be, i.e.
abandoned pipes) has fixed our workflow.