You're correct that the in-game data is live, but stewarding requires human input to be accurate.
If car A and car B are coming out of the first chicane at Monza and car A intentionally slows down to force car B along side, to try to push them off track, but instead car B taps car A from behind and sends them off track unintentionally, all the data the game gets will indicate car A was slower, car B hit it and knocked it off track. That penalty falls to car B for not evading (and coming alongside car A), despite car A's malicious intent. A live human steward would call it on car A, not B, as the steward can see intent. An in-game system can't.
As much as we want to bemoan PD for not being able to program a great penalty system, we're the problem. We get emotional while racing and act like dicks and do things the game doesn't expect, all to ruin other people's races. You wouldn't see most of that behaviour IRL because it's cost a small fortune to repair the cars, only in videogames.
The game can see car A slowing down without reason. It knows the speed for that section of the track (The AI knows) and knows the positions of all other cars thus can easily tell there is no reason, no obstruction in front. Human reaction times are also no secret, if there was not enough time for the car behind to evade then he should not get a penalty.
If car B goes alongside, then the game can easily track how much room each car is giving the other car. If there is contact and one car is not left at least one car width to the edge of the track, then the car with all the room should get a penalty.
The game can see intent as it has all the inputs the driver makes. Braking on the straight without anything in front, far before the braking zone, it's a brake check.
There will always be situations that are hard to tell, in that case shared fault would be best and still deter people from making contact. But there are plenty situations the game should be able to sort out by now. Side swipes, T-Bones, pit manoevers, dive bombs, brake checks, dangerous track re-entries, all are very possible to detect.
But you are right, all the data the penalty system has been getting is, there was contact, this car went off / hit a wall / lost a position, other car must be the bad guy. Starving the penalty system of context is the problem. All the info is in the game and in lower SR the game will ghost cars that attempt dive bombs and side swipes. It can detect those already! Yet fails to penalize the correct player in higher SR where ghosting such moves doesn't happen.
In corners it's also not that difficult to determine which car is following the corner and which one is steering the wrong way or not steering to push the other car out. The AI routines can calculate what inputs are needed to make the corner, the one that deviates the most from that is more likely at fault.
A lot of emotion on the track comes from faulty penalties. A rammer not getting a penalty while touching a laggy car, brake checker, bad track re-entry, wreck from other people fighting, triggering a penalty is the fastest way to induce road rage. No penalties worked better in GT Sport to keep tempers in control. Half the problems come from incorrect penalties and incidents at the penalty zone.
Also without penalties there are real consequences, as in, people will retaliate without fear of penalties and bad apples will manage to turn the whole room against them in repeat races. It would be better if the penalty system worked so vigilante justice wasn't necessary, yet PD refuses to work on a better system. Instead they keep tweaking the old flawed system that doesn't have enough information to make any sane judgment calls.