Having the highlight tag actually seems simpler to me. The search engine
(but not the http server) knows what constitutes a match as the search
results are being accumulated. It is very easy for the search engine to
insert highlight tags at this point. And it is a no-brainer for the browser
to handle the higlight tags.
If the client is to reconstruct the matching patterns by searching on text,
then the highlighting function is limited to searches that are simple text
matches. For instance, simple clients probably would not support
highlighting when the seach criterion was "the document has a paragraph that
contains both the words 'test' and 'diagnostic'". The client would likely
highlight all words 'test' and 'diagnostic', even if they did not appear in
the same paragraph.
Let the search engine report on its results with the highlight tag - this
allows any search algorithm to report on any useful information. This also
means that simple clients will work with any search algorithm.