It's all in the details. Editing lineups and rotations to actually make sense. Adding a little bit of player input into the lineups (like Judge prefers batting second irl, but the game always puts him at 3rd). On top of that, it's good to make sure that realistic trades and free agent pickups happen. You will always see a young player who has A potential being listed by the CPU because it thinks that there's too many players in that position. Last year it was Jackson Holliday who was always on the block. That will not be entertained anytime soon irl.
Also the CPU never bolsters its lineup to account for injuries. Players may go down for multiple months, but the game just wants to call up a ~60 something rated player and keep it moving. Not very realistic for most franchises.