Frankly I hate the goto() calls. :-) Doesn't that double the load on the server, since Drupal gets built up, processes the request, redirects, and then gets built up AGAIN to display the page it was already at? What's the advantage of the goto, when the downside is doubling the load on the system?
1) After submitting a form, you are usually taken to the result at its normal viewing url (e.g. node/123) rather than the form's URL (node/add/page or node/123/edit). This makes URLs more consistent. 2) Any changes made to already-loaded Drupal pieces (e.g. the menu, the modules loaded, cache, the form itself, ...) will take effect immediately. 3) You can refresh the result without resubmitting the data (this used to be a huge problem on Drupal.org even when we were small). 4) You can provide permanent GET URLs for forms that are used for browsing only (e.g. search). The amount of work duplicated is not as big as you seem to think. The POST request only deals with submitting the data and saving it. The GET request afterwards only deals with loading the data and displaying. They are mostly complementary. Steven