Is it better to have one instance of a continuously running agent job or to fire off the job multiple times throughout the day?
There is a certain amount of overhead each time a job starts--reads and writes on msdb to track the state and schedule calculation, create a session, etc.  So from an efficiency standpoint, it would be better to run it in a loop.  This will also make it run more closely to every second, because when a job starts, it takes some time for the job to actually get to the point of executing code.  So if anything results in a random .25 second delay in the job actually getting to the point of executing the code, then you may have a significant gap between executions of the code.  I think (someone please correct me if I'm wrong) that it has to go through the entire login process, so a delay could be caused in the authentication process due to network issues.

The downside of running it in a loop is that you'll have to handle any errors in the code.  If the job runs every second, you can configure a failure notification on the job, and if there are problems you'll get an email.  If it runs in a loop, you'll need handle errors and notification in the code, and also monitor the job to ensure that it is running.