There's always a build vs. buy decision and sometimes you should build, but this is why even huge companies use Salesforce over maintaining an internal CRM.
Building something in-house probably doesn't usually result in a better product up front (and definitely not for less up-front expenditure), but it can reduce some risks and be less constraining to future moves if you own the app.
I was going to reply this to a different guy, but in my experience the risks of the in-house app going out of maintenance due to dev attrition or whatever are far lower than most people think. Stuff that's business critical is almost always staffed appropriately, and stuff that people perceive as business critical but actually isn't is usually the [large group of small apps] that aren't well supported. The big problem is the rinky dink Excel macros, VBA/COM+ add-ins, and random isolate single developer crap that nobody knows about except the end users.