An .ipa file is actually a set of zip-compressed files. Some data compresses better than other; text, for example, may very well compress with a rate of 1 to 10, whereas binary data such as an executable (*), image (**) or sound (***) does far worse. See http://www.maximumcompression.com/index.html for a number of comparisons.
If you want to significantly reduce the size, you'll have to find out where all those bytes are coming from. And then find a way to do without them.
(*) Modern executables contain lots of zeros at several points (mainly padding data pages, IIRC). However, the bulk of a larger executable is probably code, and that compresses badly.
(**) Computer images in general compress very well--so well, in fact, that you probably have *no* un-compressed images in your app. Both JPEG and PNG are natively already compressed, and therefore can hardly shrink any further.
(***) .. except for MP3s. But (1) those aren't raw sound files, they are already compressed -- see the previous point. And (2) even if you do have raw sound data, the default compression algorithm will not *recognize* it as a sound file and then apply MP3 compression, it'll settle for the default ZIP-compatible compresssion.