I'm using both a dialog service and interaction requests.
A dialog service is better for common dialogs that must be displayed throughout your application which have the same look and feel. For example, OpenFileDialog, Color Choosers, Printing, Error Messages, etc.
Interaction requests can be better for simple user interactions which are specific to a certain view. For example, let's pretend that a view has a button which is bound to a command in the view model. That command allows the user to pick between options A,B,C and then performs some function with that choice. The ViewModel may start an InteractionRequest that it wants the user to pick from A,B,C. The View can handle that event and provide a simple template which describes how to display those options A,B,C to the user. Therefore you maintain separation of UI & business logic. In this case, it seems better to implement this custom interaction from within the View code because it is simple and specific to this view.