In realtà \@ifnextchar può verificare che cosa sia qualunque token; l’esecuzione di \@ifnextchar implica sostanzialmente l’assegnazione mediante \futurelet il significato del secondo token alla control sequence \@let@token per poi controllare con altri comandi che cosa fare nell’esisto del confronto dei token, non necessariamente dei caratteri; un carattere è un token ma anche una control sequence è un token; quindi puoi verificare qualunque token anche macro definite con \newcommand o equivalenti, e basta confrontarli con \ifx che ne verifica, se sono sviluppabili, la consistenza del primo sviluppo, vale a dire al definizione. Che cosa faccia \ifx rispetto agli altri condi condizionali è ben spiegato nel TeXbook; gli altri sviluppano i token che seguono, \ifx non li sviluppa ma ne confronta lo sviluppo, se esiste, altrimenti ne confronta solo codice e categoria.
Il nome giusto che dovrebbe avere \@ifnextchar dovrebbe essere \@ifnexttoken; ma il Grand Wizard DEK ha scelto quell’altro nome, anche perché viene quasi sempre usato per confrontare caratteri.