I have not found a very clear explanation as to why static methods cannot be used in conjuncture with web service calls and page methods.
Well the answer is pretty simple. In order to work with javascript ASP.NET creates a proxy class from the class the web service points to. So when you make a call from javascript to the web service your calling the generated proxy class. However, static methods are inherently separate from the class and can be called without making an object reference to the class. Therefore it cannot be generated with the javascript proxy class and as such cannot be referenced.