If you just close them:
new file descriptors gets the lowest descriptor number possible. If fd 0/1/2 is closed, a new socket you create, or file you open would be assigned to those fd's. Which means you risk dumping stuff that should go to stdout onto that socket or file.
accidental printfs etc. that prints to stdout, or for some reason try to read from stdin would fail, and possibly your program would exit if it tries to operate on a file descriptor that does not exist.