Effort-driven means that when you assign or remove people from a task, Project lengthens or shortens the duration of the task based on the amount of resource units assigned to it, but it doesn't change the total amount of work for the task.
In many cases when you begin planning a project, you know "what" needs to be done when adding a task to your project. For example, you know (or have solid estimates of) the square footage of the walls to be painted or how much software code needs to be written for a particular set of features.
So when planning a project, you often have a pretty good idea of the "work" that needs to be done. To complete your project schedule, you then adjust the anticipated times to complete this work (duration) and the number of resources (resource units) you can assign to it to complete the work.
With this idea in mind, the effort-driven scheduling feature is turned on by default in Project. You can turn the effort driven setting off, however, if your project tasks have different requirements.
So, how do you decide if it should be on or off?