You often need to filter and modify the where clause of your view object programmatically in your controller bean depending on a user action. (for example, a click on a button will show a different set of data in the same table)

To do so you can either add the where clause programmatically in the controller or apply specified view criteria.
As a best practice and to allow a better maintainability I would always recommend applying a view criteria as any action on the data should be done in the model. (And it will be easier for you to update it if needed)