You're right, the complexity of these VOIP-based systems is much higher. But sometimes it's worth it for both cost and flexibility. I think each business needs to evaluate what's right for them.
For example, in the setup I described in my other comment, the business wanted to move away from a Lucent/Avaya Partner system they had been using for over a decade. They had 3 lines and about 15 extensions and were somewhat happy with it. The system for many years had, as you say, the "maintenance overhead of a desk lamp" but it was starting to drop voicemails randomly, the phones sucked, adding more lines meant buying one of those extension modules, etc. Plus the building was being renovated and running just CAT6 everywhere instead of separate ethernet and phone lines was very appealing.
Buying an inexpensive Dell rack server, Polycom phones, and a couple Linksys analog gateways was much cheaper than the initial investment they spent a decade ago. Since they kept the analog lines, which are useful for fax machines and security systems, there was no need to really worry about QoS initially since internal network bandwidth was plentiful. This alone fixed the problems of the aging system and they got voicemails and faxes delivered via email, shared directories browsable directly from phones, proper call parking, and a ton of other small features.
The cost benefit came when we added an external VOIP provider later. Now they could have unlimited simultaneous inbound and outbound calls for a single DID/caller ID and just pay a flat-rate per minute. At their usage, this came out much cheaper (4x) than the deals negotiated with Verizon locally. And the concept of individual lines that could be busy just melted away. The system is still configured to fallback on the couple analog lines if the internet goes out, but the rate plans have been reduced to the bare minimum so that incoming calls stay free.
EDIT: Almost forgot, another key benefit of a software switch is the easy integration it allows with your backend apps. For our internal rails-based order processing app, I implemented dial-on-click (ala Google Voice) and call history logs for all our vendors and customers (see librevox and mod_xml_cdr for FreeSwitch if you want to do something similar) in a day.
But viraptor is right, ensuring all the fallbacks work correctly and are tested takes time, and it might not be the wisest way to spend time if you don't understand what you're getting into.