It depends on a lot of things. There are valid reasons for either way.
If you do the work right away there is no chance the customer will cancel but they may raise objections to the cost since they haven't been given an estimate to mull over.
Some jobs can be a can of worms throwing your scheduling for a loop. Better to have seen it first so you know what you are up against.
If you are going to do the work right away you need to have a well stocked truck otherwise you will be making a second trip anyway.
Me? Unless it's simple I always estimate the job then schedule it depending on how long it's going to take and the availability of materials.
-Hal