Whoever wrote this doesn't seem to quite understand how bit math works.
"IPv6 addresses are 128 bits long, compared to 32 bits long for IPv4. In other words, IPv6 addresses are 296 times more numerous than IPv4 addresses."
IPv6 addresses are actually 2^128/2^32 or 7.9e+28 times more numerous than IPv4, which would strengthen the argument that it's hard to be "wasteful" with them in the way described.
That article completely ignores NDP exhaustion attacks. As autoconfiguration has no place in a server environment anyway, which is the protocol that breaks, there's absolutely no need to assign a /64. The more important goal is to avoid fragmentation; it makes more sense to allocate a single larger subnet than multiple smaller ones so as not to fill up routing tables. Externally to your network, you'd aggregate anyway, but it helps to keep routing tables lean on layer 3 switches which aren't capable of as many routes. Also, some vendors' IPv6 implementations have FIBs that use /64's, and may need buckets for multiple subnets within, which can be inefficient. A good compromise is to reserve a /64, but only assign something more reasonable like a /121, with 123-125 usable IPv6 addresses being more than enough in most cases.
That is an artificial limitation. I got an allocation as a ::c001/64 and can use up to 15 more addresses, but I strongly suspect that I share that /64 with many others. I continue paying DO, but I believe they just plain don't get IPv6 and DNS want to spend the time learning. It's a shame as they are likely to be affected by the IPv6 shortage much more than the larger/more expensive providers and it would be in their interest to have more of te Internet upgrade.