The GUI for NXC (BricxCC) is only available for Windows, while Lejos can be used with Netbeans and Eclipse on Linux, Windows and Mac.
NXC is similar than C but it implements only a subset of C, while Lejos is a full featured real Java language. However, the runtime library of Lejos is smaller than the runtime Library of Sun/Oracle Java with respect to the smaller available memory.
NXC has some limitations for the number and type of variables, number of procedures and number of threads that come from the NXT bytecode interpreter, while the Lejos JVM is only limited by the available memory (as far as I discovered). The hardest limitation of NBC is that it does not support pointers and dynamic memory allocation.
On the other hand, NXC runs on the original Lego Firmware, while Lejos requires to replace it. Which is technically simple but maybe not allowed in school.