Computer programmers often write systems that only have one copy in use, by one client. Consulting engineers of any kind (mechanical, electrical) as well. Not to mention architects.
You're right. The diversity is enormous and there are lots of different cases. May be my generalization went too far.
For example, industrial automation often uses PLCs, which are way more expensive and inefficient than Arduino. The economics of this is totally different than designing products for sale. Arduino would be a cost saver, if only Arduino could get regulatory approval.
Regulatory approval is unnecessary in most cases, maybe in Canada you have to have it? I have designed products used in Canada before and not even asked once if it was 'approved'. We are talking about professional engineering of products/projects, but I guess many are in the paradigm of thinking in terms of consumer based, high production products.
Also, the original question had to do mainly with the software, and I think that has been covered a little, although I don't have a clear idea of why the Arduino software is not 'professional' when it will do the job. I keep hearing comments talking about it being slow, libraries are bad, licensing issues, but I have clearly stated that these 'WILL do the job', and in the solutions that I would be involved in, I have no problem handing over the software, libraries, anything that has to do with software. I would even give the recipient of the solution a couple of USB cables if they asked for them. This would all be in the cost of the solution that I would charge them.
The kind of solution that I am talking about would involve a company that has a problem that needs solving and have contracted me to provide a solution. If the Arduino is one of the products in that solution and will do the job, I haven't heard any arguments or logic that would stop me from utilising the Arduino, even an Arduino Uno if needed. The company isn't paying me for the Arduino, per se, but a solution to their problem that for whatever reason, they did not have the means or time to solve. If I was to use any product in the solution, I would set it up as a test for few months to insure that there were no issues. The price is in the solution, not the product (Arduino). If after a reasonable time this was satisfactory to the customer, then I would install this on all affected machines or situations as needed, once the authorities of the company agree that the solution is working satisfactorily. This is when I would give them the software and training or whatever they requested, as long it is in the pervue of the original agreement. Then give the maintenance people training on how to load the software if requested. This doesn't mean that some engineer couldn't come along and figure out how the solution works and incorporate into future machines/situations, this company owns the solution and we are done. This usually doesn't happen because engineers/employees of companies like this are way too busy taking care of their part of their duties at the company to sort this out. But, if they do this, I don't see a problem because this company asked us for a solution, we provided the solution and we will probably be asked to fix other issues they may have in the future, win, win.