One other aspect to consider, is reviewing your own *.nc file after a few months, or worse, someone else trying to imagine what its all about. I've never had to work in that situation where someone else had to make sense of a clever program I wrote, but I can imagine a bit of hassle where several people are involved.
Overcoming the problem of "old nc files", regardless of how cleverly written they were, is one of the reasons I am gungho about OneCNC's software: the entire machining process can be reviewed in simulation or toolpath preview, at any time, by anyone, and give them a good idea of what train of thought was used in writing a given nc program. No need to single step through it to see how it worked.
To achieve this end, I am personally willing to endure a bit of extra code, for the convenience of having the whole model, and machining strategy available for replay at any time.
Not to leave the wrong impression, OneCNC does use some canned cycles. I have even got my post set up so I can do certain types of single level subroutine nests quite easily. Simulation only sees the subroutine as a single operation, though, so I still have to know a little bit
I've got no experience with any other cadcam software than Bobcad and OneCNC, so that explains my limited viewpoint. I'm sure that other guys have reasons why they like their cad cam systems, but once you find a good one, you might as well really embrace its usage, because the more you practice using your cadcam, the better you get.