Why urlencode to post data via curl and why not doing the same with form?

what about using it always anyway?
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($params));
Is it good idea? what are cons/pros of this way (http_build_query) ?
I think this is a new fashion for that foreach loop to urlencode it within loop, and even this http_build_query is still unnecessary as all requests get urlencoded/urldecoded behind the scenes? right?