Essentially if you need to impersonate a user for them to do something they normally don't have access to do. You shouldn't really have to do this as there are ways to work within the Sharepoint environment to handle this.
Some situations that I've seen this being used: aggregation for web part data. Some people will use RWEP to aggregate data across the farm. This is not necesssary as search can do that for you. It also opens up "security holes' in that it is pulling back everything because the app pool accounts can see it all.
Features. Not necessary, since you need full control access to enable features, thus giving the current user all the permissions he needs to execute the code you have created.
Item creation. Some people feel that users shouldn't have access to an underlying list to be able to create items, so they use RWEP to insert or modify list data. The Sharepoint security model is robust enough to create Add only permissons or add and edit permissions and even doing things like item level permissioning.
In my opinion, RWEP is a crutch to get around the security model of the system and shouldn't be used.