Apart from the fact that an automated approach is quicker, consistent and less prone to human error I was wondering if there are other advantages of provisioning sites using a programmatic approach. For instance is it safer to use the UI. Are UI built sites more reliable and less prone to corruption. Or is it the other way around. The reason I ask is that my management wants me to build 100s of libraries and folders by hand because they don't trust programmatically built sites and libraries because they are known to be more supscetible to problems and issues. I know they are crazy but please give some more ammunition to fight back.
Your management is crazy if they think that if there were to be an error when creating 100 sites with libraries inside of them that there would be more of a chance of error from a code solution approach than simple human error from a manual approach.
The biggest advantage of building out a SharePoint solution (and in your case it seems like you'd want to build a Web Template that extends one of the OOB options) is that if it is messed up, all 100 sites and all the libraries will have a mistake because you're spawning them using the same Template. If you do it by hand, you'd have to go through everything manually and see what's messed up.
And please note, by "messed up" I mean clerical error, like forgetting to attach a column to a list or a misspelling. You'll never have to worry about "corruption" until you are writing custom code which it seems like you aren't. Basically, what you would be doing is providing an XML schemaed template that SharePoint will interpret and build out lists, libraries and pages accordingly.
We have an internal project that has over 10,000 sites based off the same Web Template that contains several custom lists and no issues at all.
Whether you build out your topology using PowerShell, a SharePoint Solution, or the UI doesn't really matter. In the end, all three methods use the same SharePoint API to generate those components.
That said, you can certainly do bad things in code, such as not disposing objects, which can have an adverse effect on the efficiency of the solution, but if you know what you're doing and understand the API there shouldn't be anything negative happening if you have scripted your build.