He should plead not guilty if he is not guilty, or if there is any evidence on his side that mitigates his guilt. A person should only plead guilty once it is known what evidence the state has, and is certain they will be convicted. Even then pleading not guilty gives the defendant a chance to negotiate a lighter plea or some form of pretrial diversion program. In New York a class B Misdemeanor is punishable by up to 6 months in jail, but depending on your son's prior record, he is likely to receive either probation or some other diversion method. If he pleads guilty, this will be on his record forever, and that is rarely a good thing. Talk with his lawyer and see what his options are and what can be done.
Depending on the facts of the case, most B misdemeanors in NY can be negotiated down to non criminal dispositions such as a violation or dismissal via an ACD (adjournment in contemplation of dismissal). I cannot speak to the facts of this case but your son should be asking his lawyer what the likely best result is in this case and how plea negotiations have progressed with the prosecution.
As we don't know enough about your case, you should not consider my answer to be legal advice. You would need to consult with an attorney at length and include details about what has occurred in order to adequately assess your criminal exposure.
He should not plead guilty, until his lawyer advises him to do so and only after he is 100% aware of the charge and the consequenses of his plea. Note that it is not unusual for a case in the Bronx to drag on for months and months and even years. There are many reasons the case could drag on for such a long period of time and it does not mean your lawyer is doing something wrong.
I recommend scheduling an appointment with his lawyer to discuss exactly what the charges are and how he/she intends on defending the case.
Otherwise, consult a new attorney as soon as possible.