QR codes often encode URL's/URI's and the application typically hits up a database upon scanning them just like any other inventory barcode.
* QR codes mandate a minimum of 15% area used for error correction and a maximum of 60%.
* Data Matrix codes mandate a minimum of 0% area used for error correction and a maximum of 50%.
* The amount of overhead in QR codes (finders, timing, alignment) is probably in the same ballpark as Data Matrix codes (black lines, checkered lines).
* PDF417 codes demand low vertical resolution (e.g. 15 thick steps) but high horizontal resolution (e.g. 200 thin steps). They are hard to scan on a phone camera. Although this thick-thin design is appropriate for line scanners, the asymmetry in horizontal-vertical information density leads to poor information density overall and higher susceptibility to damage and unreadable barcodes. Square primitive blocks make sense because they are more spatially balanced.
That said dense 2D barcodes read by dedicated imagers in controlled lighting scenarios, as far as I've seen, are always datamatrix. Not sure if that's merely historical or if there's a technical reason for that.
QR codes are great, and I never understood why they're treated as such a joke.