Okay, "32000" comes from using a short-indexed list (max for a signed short is 32,768; some implementations of such lists might "cap" themselves at 32000 just for an easier-to-remember number in the docs).
Why not an "unsigned" index? Generally signed values are used when the list is not likely to expand beyond the signed-16-bit limit in any case, thus allowing a programmer to use the 16th bit (the sign) as an error flag (ie, return -1 on error instead of an index in the array, etc). There are certainly different ways to do this (most obviously use a separate field altogether for the error indicator), but the signed-bit error indicator is the most efficient design pattern by far. And though it cuts the overall list max size in half (from 64k to 32k), when your design parameters don't even touch 32k it is wholly acceptible to trade unused capacity for efficiency.
Why not a larger (32-bit) int instead of 16 bit signed shorts? Because (1), again, 32000 is one hell of a lot of songs - far more than iTunes was designed to handle - and such a limitation is thoroughly understandable in a consumer music library app, and (2) a larger index inflates the memory usage requirements of the application and slightly complicates the API, which in turn makes the app slower and more memory-intensive for the 99% of us who don't have or even want 32,000+ songs in our libraries.
Why not a database? Because that's pure overkill. iTunes can keep a lot of its information in memory (another reason to have hard limits on library size), with little-to-no overhead as one would see with a database back-end. Granted, there are also arguments for a database, including allowing other apps to see the iTunes information (the xml file is fairly easy to parse if you need to, though it assumes an order-preserving XML parser which isn't exactly standard-compliant although almost all XML parser libraries are order-preserving), but a database-backed client application is an order of magnitude more complicated to design and implement than one that can hold the vast majority of its book-keeping data in-memory at all times.
Finally, someone said that it would be "easy" to just use unsigned 32-bit ints instead. Well, no. See the arguments above as for why you wouldn't want to do that in the first place, and then consider that the cost of moving to a wider index now is quite expensive. You would likely have to use different underlying list classes, and any place where you are holding an in-memory index (32000 bytes isn't a lot of memory to just hold in RAM) you now have to reconsider (because 2GB of memory is!). This is far from "simple" This is a redesign and rewrite of the data management code.
People. Cars aren't designed to operate at 500MPH because design involves compromises (and I doubt most of us would really enjoy taking the kids to school strapped on the spoiler of an F1 racer, right?) Design is, by its nature, a study of compromises. iTunes is not designed to operate on 15 billion songs. That design imperative extends from the UI paradigms involved (playlists and such are a poor interface for mega-libraries of music) to the underlying data structures (what we are seeing here most likely). If you need more than 32000 songs then you should purchase a product designed for that, and recognize that its interface will likely be quite different from that of iTunes. iTunes is designed to be easy-to-use, clean, and fairly efficient for managing and playing a consumer-sized library of songs (yes, more like 1000-5000 songs max than 32000).
For a 1-5k library managing system, iTunes appears quite well designed. It has a significant (~10x) growth room for 95+% of us, while retaining the most efficient underlying methods possible.
For the record, my iTunes library is 1115 songs, of which I'd sideline (burn MP3s to CD or DVD and archive them) probably 300-400 if space were ever needed. My library takes 5.28GB on disk, ~4.74MB/song, which would put 32000 songs at about 152 GB. I definitely won't be allocating that much hard drive space to iTunes in the semi-near-term future either.