Drupal 6: How to create a special case for searches on a limited set of single symbols (such as @ and ! and " and : )?
Taking a fresh look at the problem this morning, I took a stab at finding out how to create a module to solve it. I think the search terms are run through 'check_plain', stripping it down to just text (no symbols). 

Turns out that a module providing the hook_search_prepocess hook can override the text used by the indexer and the search. So I put together a module in which my hook does a replacement of '@' with 'atsign', which appears to solve the issue. Also means I can set the minimum word size back to '3', as long as my replacement text is 3 or more characters.

I now have a sites/all/modules/searchfix/searchfix.module file (and corresponding .info file), with the following function in it:

function searchfix_search_preprocess($text) {
    return str_replace("@", "atsign", $text);
}