Because that is the way HTTP requests work, GETs just request data with details given in the URI provided, POSTs also have details in the URI but also have the body of the request to take care of. The amount of data you can send in a GET is limited by the maximum URI length (practically about 2048 bytes). The data you can send in a POST is effectively unlimited.

The RFC for HTTP 1.1, kind of says this, but in a typically RFCish round about way:

http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.3

"The GET method means retrieve whatever information (in the form of an entity) is identified by the Request-URI."

and

"The POST method is used to request that the origin server accept the entity enclosed in the request as a new subordinate of the resource identified by the Request-URI in the Request-Line."

See, clear as mud...

Edit:

Looking through the RFC again, there isn't anything that says a GET request can't have a body, but never the less it is normally used without a body.

Another edit:

Some more reading suggests that some people are making SOAP calls using HTTP GETs, but only when they aren't passing any arguments to the call.
_________________________
Remind me to change my signature to something more interesting someday