Because APNs don't work that way. There's no "standard" way of doing that. It's not like over-the-air PRL updates on CDMA2K networks. On iPhone specifically, there's only one way of pushing APNs to the phone, and that is if the carrier has a carrier profile. If they wanted to have their own official, Apple-signed carrier profile on iOS, they'd have to play by Apple's rules, which presumably means becoming a contracted iPhone reseller.
Ideally, APNs would just be another value that the SIM card could carry. But I guess since packetized data over GSM predates the SIM card standard, we're stuck with this need to program them directly into the phone.