I fixed this problem (I think). I haven't gotten the repeat weather the few times I've tested this so far. I'm not sure why this was a problem, but it got fixed when I switched back to using $com instead of $comcall. Is this a bug of some kind? It's a little slower this way, and I think I had manually opened the COM, so I'll still need to see if it opens if it isn't already, but it works for now. Here's what I have.
Code:
on 1:NOTICE:!weather*:*:{
  if ($com(weather)) {    
    var %zip = $2
    noop $com(weather,GetWeather,3,bstr,%zip)
    var %weather = $com(weather).result
    notice $nick Your weather for %zip  -- %weather

  }
  else {
    comopen weather weather.GWeather
    var %zip = $2
    noop $com(weather,GetWeather,3,bstr,%zip)
    var %weather = $com(weather).result
    notice $nick Your weather for %zip  -- %weather 
  }
}