Yes, I know in app purchase is more complex than a simple ifdef. However the secondary version (the fully paid version with no in-app purchase) is just an ifdef from the in-app upgradeable one. You take out the ads and in-app registration code and voila, fully paid app.
(I know, I wrote said ifdef in an optionally upgradable app this week for a client).
I would argue that it really depends on how many places you need to put the #ifdefs to see if it is worth the added complexity.