I figure the best morality system would have to be utterly seamless.
First off, no colour coding. No Angelic Blues and Demonic Reds. This includes the omission of any kind of "karma meter" as well as any Lionhead-ish gimmicks like growing blond hair and fair skin or sprouting horns and being followed by a swath of flies. The world needs to remain visually and thematically oblivious to your alignment, because everyday life doesn't turn to a light bluish tinge when I step outside. Unfortunately, that kills a lot of today's "Your actions affect the world!" gimmicks and would, according to some people, diminish player agency.
Then, the script needs to be smart. We need to have more than the usual "Celebrate the Eucharist VS Sacrifice Unborn Puppies on the Altar of Chtulhu" dichotomy most morality-focused scripts and storylines tend to have. The game's lore and structure have to be deep enough for the player's choices to be utterly transparent. This includes the complete omission of anything like Dishonoured's initial loading screens. You know, the ones that go "Don't kill too many people, or else you'll get the EEEEEEEBIL ending!"
If you want to castigate the player for taking a certain route, make that organic. Make it a part of the experience, not a part of the loading-screen window dressing. Make me go "Oh shit, my actions really do matter!" instead of "Oh, right, it's another one of *those* gimmicky systems".
Design everything around the premise that the player's moral choices have to bubble up to the surface as something that slowly takes form. Don't shove it in my face and go "See? SEE?! THIS IS WHAT YOU'VE DONE!"
Above all, splurge on the themes and on the ending's structure. Give us breadth and depth; something to think and feel our way through. The ending has to feel like much more than the final step on a cosmic switchboard, so the branching paths leading to each ending need to start far, far sooner. You can't just constrain your players to a single set of tracks and then, after twenty-plus hours of gameplay, just go "Okay, Decision Time! The button on the left makes you a saint, the button in the middle makes you a conflicted human and the button on the right defines you as a subhuman piece of trash! GO!"
Of course, making the paths branch out sooner means a LOT more work needs to be put into level design, scripting, scenario, modelling - everything needs to be doubled, tripled or quadrupled, depending on how many final options you're aiming for. Entire levels or hubs should be locked away if you're of a certain disposition, while others should be available. The justification for this needs to go deeper than the baseline "You're good/evil so you get to enter this here zone!".
Largely, your script needs to be smart enough to tackle the fact that people aren't jerks or saints. We're all a little bit of both in different proportions at any one time.
As such, morality systems will only go away once we get past the obsession to create safe and reassuring storybook sequences. As long as we'll need a Big Bad to slay or some pseudo-deep but actually shallow discussion on the nature of Good or Evil, we won't be able to progress any further.