1. Регулярность работы, объемы работ.
Штатные дешевле если есть постоянные объемы работы.
2. Квалификация и сложность работ.
Аутсорсера легче нанять даже если у него высокая квалификация.
Штатный высокой квалификации - это должна быть действительно огромная необходимость и сложные долговременные задачи с соответствующими бюджетами.
В 1990 года - тогда да, все держали своих программистов и все пилили свой софт.
В начале 2000 - содержали своих админов, и иногда программистов.
Сейчас нормой является аутсорсинг.
Стали умнее и стали считать деньги.
Штатный программист ничего не гарантирует.
Штатного программиста одного держать сложно - ему профессионально скучно.
Если задачи позволяют/требуют держать 3 и более квалифицированных человек, тогда штатники уже выгодно.
Иначе - вы их даже толком проконтролировать не сможете.