I don't know for sure, but I've thought of a reason why it makes sense, so here goes …
Joomla components use
FormController to handle whenever the (usually admin) user is editing an item and then presses eg
Save to save the changes. This results in an HTTP POST to the server with the
task parameter set, and control gets routed to the appropriate controller php file in the component
The controller needs to get the form loaded in order to validate the POST data, and this involves going to the component
model and using it to load the form. During this process the model's
getState can be called, and hence
However, because Joomla uses the Post/Redirect/Get pattern, this HTTP POST is going to end up with an HTTP redirect. The method
populateState on the other hand sets up variables which are later used in preparation for outputting data in an HTTP response, and also can involve database queries, eg to get config params. So it's actually doing a lot of work, sometimes involving database queries, for no good reason, as the HTTP response in this case will be a redirect.
Maybe the Joomla team were doing some performance analysis and noticed that there were database queries which were superfluous, tracked them down to
populateState and then came up with this
ignore_request flag as a generic solution that didn't involve changing each component.
Have I convinced you ;-) ?