The & does not stop the input going to channel, ill tell you that flat out right now.

try this, on a clean mirc
scrip1.mrc
on *:INPUT:#:{ if (FRED isin $1-) { echo -a BLOCKED BECAUSE OF FRED | haltdef } }

script2.mrc
on &*:INPUT:#:{ if (FRED isin $1-) { echo -a BLOCKED BECAUSE OF FRED (&* copy) | haltdef } }

script3.mrc
on *:INPUT:#:{ if (FRED isin $1-) { echo -a SENDING IN CAPS BECAUSE OF FRED | msg $chan $upper($1-) } }

now go to a channel and say "my name is fred the dog"

it should come back with
BLOCKED BECAUSE OF FRED
SENDING IN CAPS BECAUSE OF FRED

if u got a second client in channel it well also see
<firstclient> MY NAME IS FRED THE DOG

The & blocks only the script its attached to running if that events been previously halted, i would have to assume something is displaying the text to channel in an event that maybe isnt halted?