Is there any reason for performing full URL encoding on a POST body
===

I'm currently working on a C# WinForms application which makes calls to a couple of remote web services. In investigating a bug relating to strings containing ampersands, I came across the following method which 'encodes' POST bodies for the *other* web service (which doesn't have the ampersand issue, admittedly.)

    object o = row.Values[i]; //some object
    Type valueType = o.GetType();
    if (valueType.Name.Equals("String", StringComparison.InvariantCultureIgnoreCase))
    {
        o = o.ToString().Replace("&", "%26");
    }

I did a bit of WTF at this, but then thought, is there an actual reason for performing full URL encoding on POST bodies? Surely the only two risk points are ampersands and question-marks?