Why do websites such as satoshimines and bustabit generate new addresses every time? Why a single address for each user not enough? Can't they just verify the incoming transactions?

If I want to mimic this practice, how can I generate unlimited addresses, from which transactions can be sent and received?

I am searching for an alternative to the Blockchain APIs...
There are privacy advantages of always generating a new address.

You can easily accomplish this with the use of HD wallets.