While individuals may choose to make their Ethereum node publicly available, in most cases this is not necessary nor encouraged. The two main reasons for this are:
As a client, you cannot necessarily trust a "random public node" to be honest. There is nothing preventing someone from implementing an API that appears to be a valid JSON-RPC Ethereum node, but serves completely false information. The server could lie about balances, contract state, etc.
As a server, exposing a public interface increases your poptential atack surface. Exposing an interface to the public would require you to open a port through your router, which can lead to security issues, and also declares to the world that your computer hosts cryptocurrency software, and thus is likely a valuable target for hacking.
Thus, it is generally the case that Ethereum nodes should only be open to and used by the public if the node is part of a service specifically designed to handle these issues, for example INFURA.