The usefullness is that you can see if the problem is in the unit, the router, the ISP or something else.
The question is not : how can I fix a network issue and diagnose what's going wrong? But: am I connected? And what I see in many forums is always the same answer: "try to connect to this server or this one", etc. But no one seems to realize that professionals like Microsoft, Google or Facebook NEVER do that in their own app. There's maybe a reason. Did you ever see your Chrome or IE browser trying to check whether there's an internet connection or not? You will get an error only when you enter an URL that is not accessible. And even in this case, your browser won't check whether it can join another URL. There's maybe a reason.
Let's see the three main scenarios in the Android world:
- My app needs to connect to a specific server;
- My app uses services or APIs that connect to a specific server but I don't know it;
- My app has to connect to an undefined number of servers and none is known in advance.
I discard the third case because it's the typical case of an Internet browser and I don't think that someone here is trying to make one. So either your app tries to connect to a specific server that you know and the only way to answer to the question "am I connected?" is to attempt to connect to this server, or your app makes a connection through an API (e.g. Google Maps, Google Play Game Services) and you have no idea of the server to test. Fortunately, in this case, the connection check is done by the functions that you call and you should get an error or an exception if the connection is not possible (typically that will be a "Network failure" with Google APIs).
So, what's the usefulness to check "google.com", a DNS or any other server? To inform the user? In this case, why Google or Microsoft do not do it?
Let's suppose that we are unable to join our server, so the app cannot be used and we want to do something to fix the issue. As a professional server manager, you don't need that a customer calls you to know whether your server is down or the WAN has troubles. You have tools to monitor that. On the client side, what information is useful for the user? According to Google, almost none. Open Chrome under Android, or the Google Play Store. If you have no connection to the Google servers, you will have a terse message like "Unable to connect, please retry". What can do the user? Turn the wifi on if he forgot. Move to another place if the signal strength is too weak. In these two cases, you can check all that on an Android device without connecting to anything. Checking that you can reach another server, that is not used by you app, is of no use for the final user. Are you going to show that in your app: "hey, you cannot download the data you need but you can reach youporn.com. Good news, isn't it?" ?
In your answer, you say that helps you to understand what's going wrong. So it's an information for you, but how do you get it ? As a professional server manager, I don't test anything on the user side because I don't need these informations. The first thing that I do is a "traceroute" or a "mtr" to the final user and to the server. If I can reach the server, I reissue the same commands to the user from the server. He disconnected his Internet box? I can see that easily from the other side. He has no WAN in his area? I can see that too. And when the problem is due to the server, which is down, or to the WAN, or to the Internet provider, then Google is right: the only relevant message to display to the user is "please retry later".
In brief, I really don't understand why everybody needs to know if they are connected to google.com or any server that is of no use to their app.