I have never actually tried to do that. There could be some trivial OS- or NSH-related issues that you may need to deal with but what you want to do should be possible.
The primary is issue is the system needs to be able to boot without a console device at /dev/console. By default, the system assumes that there is a console device at /dev/console and tries to open that for file descriptors 0, 1, and 2 when the first task, nsh_main, is spawned.
A secondary issue is that you need to suppress the warnings and errors that you see because there is not serial console.
A Telnet NSH session differs from fixed serial console in several ways but for one, there is no Telnet when the system first boots up. The Telnet session can only be started some time later when the host PC establishes the Telnet connection.
This is not really different from using a USB session if you think about it: The USB session also does not exist at boot time and there is no serial console. There are several USB-based NSH configurations:
$ find configs -name usbnsh
If you compare a usbnsh configuration with and nsh configuration, you will see many differences:
$ cd configs/stm32f4discovery
$ ../../tools/cmpconfig.exe nsh/defconfig usbnsh/defconfig
The important differences that allow the USB console version of NSH to work are the following
CONFIG_DEV_CONSOLE=y (not selected)
There may be more to getting the job done than just those to settings. That that is where you need to start.