Most tests are based on systems where the user has a number of choices in terms of the tasks they wish to perform - Even on a simple website the user can choose to find information about X, look at pictures of Y, contact the owners... etc.
Each of these tasks has it's own complexity - How does the user find out how to contact the site owners? Do they use a navigational link? Where does that take them? Is there a form to fill in? What information do they need to include?...
This is why tasks are often set before the test.
Reasons to test may be to find how to improve a particular problem for users - in which case you will want them to perform that task so that you can observe the problems they find.
On the flip side, you may have made an improvement and want to test it's effectiveness so you will want to create a task that ensures the user makes use of the improved interface.
Alternatively you might be running a competitor analysis or bench-marking study in which case you will want to focus specifically on task on competitors systems that match those in your systems.
I can think of lots of reasons to set tasks for user testing but the only reason I can think of not to set a task is that the system to be tested only allows the user to complete one specific task.