In general, form in Trace is compared both with each complete expression that is evaluated, and with the tag associated with any transformation rule used in the evaluation.
Trace picks out expressions which match lhs, then replaces them with rhs in the list returned.
All expressions in the list returned by Trace are wrapped in HoldForm.
Trace returns a set of nested lists. Each individual list corresponds to a single evaluation chain, which contains the sequence of forms found for a particular expression. The list has sublists which give the histories of subsidiary evaluations.