<p>I am looking to use quartz to schedule emails, but I'm not sure which approach to take:</p>

<ol>
<li>Create a new job and trigger whenever an email is scheduled OR</li>
<li>Create a single job, and create a new trigger each time an email is scheduled</li>
</ol>

<p>I need to pass the message/recipient etc either way, and I'm not sure whether creating heaps of jobs will start adding considerable memory overheads, as there will quite possibly be thousands of emails scheduled.</p>

<p><strong>Update</strong>: These emails will be scheduled by users, not by me - so I will be adding these programmatically at runtime, they aren't scheduled to go out at any particular time.</p>

You might consider queuing or otherwise grouping a set of emails and have a single, or maybe a few, periodic (or scheduled) job(s) that then takes care of the 'batch'.
You could even have the Quartz job queue the emails for a collection of workers to consume and send.
I would not recommend thousands of Quartz jobs/triggers - it just isn't the intended use of the tool (IMHO).
EDIT: In response to the comment below:
I would not recommend thousands of Quartz jobs/triggers when used as part of a framework executing an application in the same JVM, The jobs/triggers will be competing for resources with the rest of the application.