I do completely agree that having to accept one broken form or another is a pointless decision to make, but I do think you’re overlooking one massively essential point:
Look at it from a programming perspective; think of just how many different animations every player has, how many different angles the players can approach one another from, the varying distances they are from one another, the size of the players, the position of the ball, the speed the player is moving.
Then, as well as all those variables, to make things even more difficult, you have to remember that unlike real life, not every single part of the players bodies count as a ‘point of contact’ as such (for the life of me I can’t remember the proper term). By this I mean, if we’re playing football, and I hit you in the face, it doesn’t matter it it’s my little finger, fist, forearm, palm of my hand, knuckle, elbow, bicep, whatever, you’re going to feel each and every single point of contact, and each and every one will create and different kind of collision between us, and every single part of someone’s body is taken into consideration when determining whether something is a foul or not.
PES does not work like this.
Then imagine taking all this, and try creating a collision system to perfectly detect fouls in a game where even the players don’t know for 100% what is and what isn’t a foul?
You said “don’t blow for fouls that are dubious”? How? How do you program that? ‘dubious’ is subjective. Video games work in maths, and rules. Dubious doesn’t exist.
People simply don’t understand just how hard programming fouls is.