There are a few posts from @FortranFan, which offer a good summary of the benefits of PDT. I was able to locate one of them:
A second post offered an example of a matrix class, where one could see how PDT’s help you write less code (on the caller side) and instead build directly upon Fortran built-in semantics. This is related to your point #4; instead of a custom procedure for allocation, the caller will directly use the built-in allocate.
Edit: I’m not 100 % sure, but it might have been this one - Julia: Fast as Fortran, Beautiful as Python - #160 by FortranFan