Why do them put a picture in the center?
Because of usability
It enables you to see directly for which purpose this QR Code is intended. A QR Code can contian any kind of data,not URL's only!
Because of trustability
Usually QR Code readers haven't any machanism of pre-check the scanned information. That means scanning an URL directs you insteantly to that website. This site can contain viruses.
Because of marketing
It pops into your eye.
Because of marketing
You see the app icon of your app. At point-of-sale one can see the dedicated app to shop with here.
It might look ugly - could made better looking. But this is best practice!
As noted in the comments, embedding pic into Qr-Code does harm the detection rate and the correction rate. This is not correct! It doesn't harm detection rate! if you make it correctly. Inormation in QR coes are put into code blocks, which you can see in the picture. If one embeds the image into this code blocks everthing will work fine. It actually enforces a quite larger Qr-Code in terms of pixels (or called version).
Correction rate depends on how often one repeat the information in the Qr-Code. If you go up to 30%, this means you put same information blocks very often into the Qr-Code. If parts of the Qr-Code is destroyed or covered, the reader might read missed information in a doubled info block somewhere on the Qr-Code. A high correction rate enforces a quite larger Qr-Code (version) as well.
Technical illustration
Source: Wikipedia