There are times when I do shell out because I am certain your points a) and b) aren't going to bite me or are outweighed by ease/speed of implementation (I am a unix admin and not a developer after all:) but there is another issue with calling external programs which can hurt as much- the output of any external command you call is not in your control and can change. Usually this will be to the detriment of your program which is relying on the output format to parse out the required data. Click, Boom! Ouch!
Do not seek to follow in the footsteps of the wise. Seek what they sought. -Basho