And as for why this is...
The fundamental premise of make is that it uses rules (in the Makefile) to do two things:
1.) see if a product is older than the components from which it is built.
2.) execute the commands in each rule for the case when the product is older than its component parts
The original idea of make was probably to improve efficiency by avoiding rebuilding things which are already up-to-date, as compiling and linking can be time consuming and expensive. When computers were slower and more expensive, this was a very significant factor. Generally, developers create Makefile rules like 'clean' which remove all of the products of a build, and so when make is subsequently run, the rules to re-build all products will be invoked.
Today, make has evolved to be an extremely versatile tool with much more functionality, and people see it as a form of packaging. This is largely correct, especially when it is used in conjunction with the autotools components that are used to create Makefiles and configure scripts that generally work properly based on specific target and build-host architectures.
Understanding the basic purpose of developer tools is useful in solving problems related to their use.