I understand that effectively, it is optimized on server side for each taget. You send code for many possible targets (hence the size), but it is tuned on the server before putting in appstore.
Have a look at this, I found interesting explanation.
https : / / www.infoq.com/articles/ios-9-bitcode
The size of your IPA produced by Xcode is not representative of the size of your app downloaded to a user's device. Depending on what features you select when uploading to the store, the IPA will contain a variety of supporting resources beyond the .app, such as symbol files and dSYMs for symbolicating crash reports delivered to you from the App Store. Additionally, depending on a variety of factors, the IPA you submit may contain machine code in addition to bitcode, but the app delivered to the end user only has the recompiled bitcode.
To fully understand the size of your app after bitcode is recompiled and App Thinning is applied, export your archive for testing outside the store and follow the linked instructions to generate an App Thinning Size Report. However, this report is only an estimate because of additional processing by the App Store. Depending on the state of the build in iTunes Connect, those sizes in your screenshots may not be the final sizes. The final file sizes are only available after an app has been approved by App Review.