They add (at least in Ruby) a few lines of code to a program; and take things like Email out of the User model and put them in a more appropriate place.
My stance is that things like sending email should be explicit calls so they are obvious. Sending email when registering a new user, for example, should be in the if user.save branch in your controllers or, if you have a more SOAish app, in the service that creates users.
def create user = User.create(params[:user])
if user.save
Emailer.new_user_email.deliver
render 'welcome'
else
render 'oh shit'
end
endOr, refactor that out a bit (ONLY IF NECESSARY!)
def create user = UserService.create_user_from(params[:user])
if user
render 'welcome'
else
render 'oh shit'
end
end