I am promoting my comments to an answer, as this came up again in CURED again today.
My flowchart is as follows:
Is the question of sufficient quality to keep on the site?
Yes. Go to step 2.
No. If a question is of low-quality, then vote-to-close for lack of quality (e.g. vote one of "needs context", "unclear", "too broad", etc). If a question is not of sufficient quality, then it should not be on the site. Closing for some reason other than duplication is a first step. Go to step 2.
Is the question a duplicate?
Yes. Provide a link to a dupe target in the comments. If I have already voted to close for quality reasons, this is done manually. Otherwise, I vote to close the question as a duplicate, and the comment is automatically generated.
No. Excellent! No action required.
If I voted to close the question for quality, but it was a duplicate, I will often revisit the question a week later to see if it has been improved (I use a userscript which automates this process). If the question has been improved, I will happily vote to reopen it, then suggest in CURED that it be reclosed as a duplicate (I cannot vote myself at this point, because the software makes it impossible to vote-to-close any particular question more than once per some unit of time).
I will note that it is rare for a low-quality duplicate to be improved into a question which can be reopened then closed as a duplicate. More often than not, the asker finds their answer and abandons the question.
My reasoning is that dupe-closed questions are not (generally speaking) automatically deleted. If a question is closed as a duplicate, it can be automatically deleted after a year, assuming that it collects no answers, comments, or net upvotes. Questions which are closed for reasons of quality are automatically deleted more easily.