The other day I was adding a delete action for an application. I added the standard red button and was just about to implement the default confirmation dialog (“Are you sure you want to delete this item? OK / Cancel”) before realizing how dialogs in general annoy me.
The problem, as I see it, is that there is somewhat of a context switch. You leave the application and are sent to Dialog Land. Admittedly, you seldom stay long in Dialog Land, but you are broken out of your current flow. It can be argued that this is the point, since this break of context means the user is forced to consider if they really do want the go through with the action. We should of course do this in the case of irreversible actions, but is a modal dialog really the only way?