Your male has reached social maturity and this is an age where several dogs start becoming aloof and picky of who to be-friend or not..yes, many people are in your situation and many of my clients come up and say in a surprised tone of voice ''but he was never like this before''!
If he growls at puppies most likely he is trying to correct their boisterous behaviors and telling them to settle down..watch his behavior.. most likely he reacts when puppies try to jump up on him or put their paws on his shoulder or acting hyperactive..
Hormones of course, play a role in his recent aggressive displays towards other male dogs and neutering may -but there are no guarantees- reduce a bit this tendency.
You say he growls at some dogs but does not growl at others..he is basically picking dogs to befriend that often match his energy level and that are less likely to cause problems.. encourage him to frequent these types of dogs and schedule play sessions.. dogs just as people have their preferences..
If you notice he or the other dog are trying to dominate rather than play, intervene if you can..things to discourage are: putting the head or paws on the shoulder area, jumping or mounting. These behaviors can trigger a fight..
If you really want to work on the problem, you can manage it.. but it may be difficult to eradicate completely.. how to manage it? Try to enroll him in group classes or try to set up one yourself with other dog owners, and work on focus.. he must work on leash and ignore the other dogs and focus on you.. attention heeling works great for this.. best wishes!