The programmer should not even need to care when the threads are interrupting each other
This is not true. There are many, many situations in which you want to know that an interruption has been requested, but you will ignore it for a little bit to finish the job you are doing.
For example, suppose one thread opens a file and starts writing some data. This thread, then, blocks, waiting for the rest of the data to be calculated. Suppose that a second thread tries to interrupt the first one. What should it do? Simply die, and maybe you end up with a corrupt, incomplete file? Should it cleanup by deleting the file it started writing? Should it ignore the interruption request and just wait for the end of the data it has to write? Should it write something meaning "I was interrupted here", so that it can continue its work from that point the next time?
On a different scenario, suppose you have an HTTP server. Suppose users are accessing your server, and, say, downloading a big file from it. You want to stop the server. The application will then try to interrupt all the worker threads. What should they do? Simply stop the downloads? Or should they wait for the users to finish downloading their files and only after that they should die, without accepting any more requests? Both scenarios are equally valid.
As you see, there are way too many possible scenarios, and it would be terrible if we had no way to know that an interruption has been requested. Sometimes, you will simply let the thread die. Sometimes, you must clean up the environment. Sometimes, you want it to finish the request it is working on but not accept any more requests.