Both mentioned operations have the same effect. The difference is, potentially, the nodes they affect.
With node.close() you close your own node, that you started from your application, which can either be the only node you have if you embed the elasticsearch cluster in your application, or just a client node that connects to an external cluster through java api (transport port).
Using the nodes shutdown api you can effectively shutdown remote nodes, potentially multiple nodes and the whole cluster as well in a single operation. As a result, each node in the context of the command will be closed, again calling the close method.
Also, both commands gracefully close nodes.