My vet also will not spay or neuter until 6 months of age on small breeds. Mainly because of the teeth and the fact that their immune systems are not fully developed at a younger age and anesthesia would be more of a risk. He is a good size but I would wait for a couple more months to get everything done at once. Make sure you do a preop blood panel to test for any infections or issues that would cause the anesthesia to be unsafe. Do it no more than 1 week before the neuter, and preferably the day before or the day of the surgery to get the best results.