* built in error correction (partially marred qr codes can still be used)
* skinable\customizable (embed your logo, change colors, etc )
* 360 degree scanning capability
Barcodes still have their place but the QR code does have some unique properties
They also have native support for some data types, like URLs. Other than that, it's mostly that they have some traction.
[1] https://en.wikipedia.org/wiki/Barcode#Matrix_.282D.29_barcod...
I do dislike the use of QR codes for static data, such as a username on business cards and posters. From a design standpoint it looks horrible and busy. I wish those apps had the ability to recognize a logo instead. Or even just a UI to scan and OCR a text username on a business card.
* https://www.nayuki.io/page/1d-barcode-generator-javascript
There is also a bit of artistic freedom you can do with the 2d ones. They really aren't as ugly as the 1d ones. Especially if you use them to "frame" something. Note, still not pretty, per se. Just not as ugly.
[1] http://support.idautomation.com/Barcode-Learning/How-much-da...
2. More redundant (ie, more surface area can be destroyed and still be able to recover the original message)