I think \$Path is probably being set in a Block in the Import call. I put this sample code on a server in test.m:
beforePath = $Path;
AppendTo[$Path, "d:/tomcat-6.0.35"];
afterPath = $Path;
DateString[]
I can see that afterPath has the correct value, but $Path is unmodified.
In[14]:= Import["http://jfkleinlx.wri.wolfram.com/test.m"]
Out[14]= "Thu 17 Jan 2013 09:58:52"
In[19]:= Complement[afterPath, beforePath]
Out[19]= {"d:/tomcat-6.0.35"}
In[20]:= $Path === beforePath
Out[20]= True
With V9, to work around this you can open a stream to a URL and use Get as you suspected:
In[21]:= st = OpenRead["http://jfkleinlx.wri.wolfram.com/test.m"]
Out[21]= InputStream["http://jfkleinlx.wri.wolfram.com/test.m", 133]
In[22]:= Get[st]
Out[22]= "Thu 17 Jan 2013 10:06:11"
In[24]:= $Path === afterPath
Out[24]= True
Remember to Close the stream. Or, you can just Get the URL directly: Get["http://jfkleinlx.wri.wolfram.com/test.m"], which opens a stream internally.
Imported file, so if it's a security measure it's impressively poorly designed. It feels more like there's some "specialness" to the context that the Import is being evaluated in. – sblom Jan 17 at 15:37