The best practice would be to ask your client, and outline the caveats you just stated to us, and then do what they prefer.
Personally I find a lot of my clients *expect* to have the print dialog come up so they can properly select their printing preferences. The only exceptions to this have been small offices (<5 users) with a single printer, or sometimes for label printing scripts.
This is what we came up with when thinking about the same issue:
First, we use a single print script for all printing in the solution. That way, we can use as many steps as we like because they only have to be done once, and we don't have to remember to add a bunch of stuff every time we want to print.
We set up a user preference for whether to show preview and whether to show the print dialog. For preview the option is "(Always/Never) show print preview, unless I hold the shift key" and for dialog it's "(Always/Never) show print dialog, unless I hold the alt or optoin key". In the print routine, we check the preferences, check the modifier keys, and check any override parameters in the script parameter, and then branch behavior accordingly.
We set the default preferences to "always" and "always".
That being said, we had this preference in place for many years, and no one, across numerous industries, roles, etc., asked about it or changed it. I still think this is awfully cool, and the options are still there in our newer solutions, but I realize now that this hypothetical need is more hypothetical than I thought it was. I figured someone, somewhere, would want to save one or both clicks needed to tell the preview to proceed to print and to tell the dialog "OK", but in fact I myself, having only one printer most of the time, never bothered to change my own preference so I could skip the dialog!
If I suppress the print dialogs I run a script step that shows the print dialogs if the user holds downs the shift key when they click the Print button. You can do this with an If/Else.