There are many reasons why we have so many different density functional theory programs, and it would be nigh on impossible to give a full answer encompassing all of them. A brief, select few:
Scientific reasons, because you need something that can handle some very specific physics or chemistry accurately and efficiently. At a simple level it might be that a particular basis set is most appropriate for the task you want, but there are many other considerations. You might want to treat solvation as an integral part of the problem (e.g. JDFTx), or not use the Born-Oppenheimer approximation etc.
Technical reasons, for example you really need methods which are efficient on some very particular hardware (e.g. with extreme parallelism, or accelerators, or very long vector machines), or are written in a particular language in order to integrate with some other software or workflow.
Philosophical design reasons. Perhaps you want a single program which can do all the kinds of calculations you want, or perhaps you prefer a suite of smaller, more specialised programs. Maybe you want something you can rapidly prototype new methods in and don't care about performance or features.
Personal reasons. Perhaps you want some software to your name to enhance your career, or perhaps you fell out with the authors of the "usual" choice (or vice versa). Perhaps your intended use of the software isn't compatible with the licence of the usual programs, e.g. because you're doing research which is commercial or classified.
Inertia. Now that we have all of these different programs, what is the incentive for developer communities to merge and settle on one particular software and approach?
Pedagogical reasons, for example someone wants to really understand how the theory and algorithms work. Many of my own PhD students write their own density functional theory program for this reason, though these are not used for real applications.
It isn't very hard! Writing a very basic, full-potential, all-electron density functional theory program is relatively straightforward. It will not be fast or scalable, nor will it compute very much -- probably just the ground state energy, density and Kohn-Sham states -- but it will work.
Finally, I'd like to note that having several implementations, even when they make the same major design choices (e.g. basis set; wavefunction or Green's function approaches), gives some competition, and this can be healthy. The Science paper referenced in the question demonstrates the benefit of this: the good agreement between the programs has not always been there, indeed it is partly due to the work behind this paper that the programs do agree so well; when we found an outlier in our tests, we worked hard to understand why and fix any issues. Reproducibility is a serious issue in research, and the ability to apply two (or more) completely independent implementations of the theory to a scientific problem is extremely valuable.
Another benefit of competition is that developers don't generally like it when a different program can do something theirs can't, or is faster, or scales better or... so competition can lead to improvements for everyone.
So in summary: there are lots of reasons why people write their own programs. Having a variety of design choices is good, but even having several implementations with similar design choices is healthy. Are there "too many" implementations? Possibly, but the "ideal" number of implementations is more than one or two.