It's the fault of the folks at the car lot. (aside from their behavior)
A 15% tip for a delivery guy is not out of the ordinary. So it is reasonable for him to think that that money might be for him, yet usually he should not presume.
In this case, however, it is reasonable for him to presume it was a tip, because they gave him more than the bill amount, in a manner that did not require change.
Bill was $42. They gave him two 20's and two 5's. All that the bill needed was two 20's and one 5. By giving him more, that is a direct indication that it was a tip. If they had given him just the 20's and a five, he would have given change and waited for a tip.
Even in the case of a misunderstanding, they should not be assholes.
(15% would be $6.30)