In optimization with gradient descent I update cost function parameters with respect to the negative gradients. In gradient boosted treed, I update the prediction function by calculating negative gradients and then fitting a tree to them. Why bother and go through the last step of fitting?
Just to add an example for illustration purposes: In the picture below I started with a simple linear regression (blue). Then I computed the gradients (with squard loss this equals the residuals) and fitted a tree to them (purple step-function below) and added it to the regression line to obtain my new prediction function. I could have just added the residuals instead, couldnt I?