We have done our own SEO and have also hired multiple SEO firms for certain tasks. I would say that there are pros and cons to each side. For some context I work for a company called Collaborate Works (www.collaborate.works) and we offer shared workspaces such as serviced offices and coworking desks. The majority of our leads are generated online through our website and because of this we focus a lot on SEO.
Our search terms are highly competitive as we have to compete with our direct competitors and workspace agencies/ portals. Both of these groups seem to have never-ending amounts of money for their SEO campaigns. Because of this we have to think outside the box on how to compete as we cannot go toe to toe with their large spending budgets. This is where our own SEO work can come in handy as we are heavily involved with our company and understand the external environment we are in very well.
In the past when we have employed generic SEO companies and spent money with them, most of them have provided unimaginative and straight forward SEO campaigns which have little effect against the big fish in our digital surroundings. However there is still a time and a place to use SEO companies to help. If we have come up with a strong idea but don't have the time, resources or expertise to implement it. That's when we will hire a strong SEO company for some help in implementing our idea or strategy.
Essentially we only pay for SEO services if we have a clear idea what we want and we can't do it ourselves for whatever reason. There is no point in paying for a generic SEO service without having an idea on what you want or how to get it as you will receive a carbon copy, plain SEO strategy which will have little impact unless you have a very large budget.
Hope this helps