If I want to ensure "quality" in a project, I implement a process to ensure this quality. This is not something that will happen automatically, magically or similar.
Software Projects by their very nature need to be pragmatic to be in time / on budget (or something resembling either) - corners will be cut. You also have people involved at various skill levels etc, and often these people will not be involved in running / maintaining the software in the long run. This is particularly true if you outsource and / or offshore (parts of) your project. It is naive to expect some developer to be compliant with your rules and regulations if these mean more time / effort with no reward. If you can get by not being compliant and probably at the same time save effort, than it would be naive to expect people not to cut corners.
So the basic and old paradigm still reigns: You need to specify each and every requirement - functional and non functional. You need to define how to measure this, and how to verify the requirements are met all the way to implementation and cecks of these verifications. If you choose to not do this at a management level, you cannot blame some developer.
And really we're talking automotive industry here. It's not financial services, but the basic quality assurance should be even more deeply ingrained. And if you have a compliance organisation, which is probably involved in all sorts of detailed design and production activities to keep the company out of liability issues, it has to be that organisations core responsibility to ensure compliance in each and every aspect of bringing cars to hundreds of markets around the world.
So yes: There have to be some developers having implemented the software the way it is, but really these engines with this software have been used in dozens of models throughout Volkswagen Group. I am not sure how "abstract" interfaces can be if all sorts of mechanical and elektro-mechanical are involved in inerfacing an engine with the rest of the car. Fact of the matter is: you can't even start a modern engine unless it gets signals from all sorts brake, exhaust, drivetrain etc systems. So I don't think it is possible to just drop an engine into a different model and tightening the screws is all that is required for it to work.
So for each of those models, it is safe to assume we have dozens of test and development cycles, some of which probably required customising the engine software.
Therefore while there may be some level of "fault" with developers (although based on the "who profits" / "follow the money" principles it is probably safe to assume, this is not something that has been exclusively devised by some developer group ...), all of the responsibility is with compliance. And this is true whether compliance checks have been ignored due to negligence or intent.