If you want automatic save states, enable the -autosave option.
The biggest 'problem' with savestate is -autosave only works for games that have the savestate flag is set to "supported", which does not match the games that hiscore.dat supported. The second problem is savestates don't always cross between versions numbers of mame.
The 'problems' with hiscore.dat include: it's a hack that adds a feature the original game didn't have (that doesn't help decode, test, or emulate), can cause errors that wouldn't happen if hiscore.dat is not used, doesn't always cross between version numbers of mame (even though it currently has a better record than savestate), and isn't supported in official mame.
MameDev moved to savestate since it can help find, repeat, & fix bugs, supports everything hiscore.dat does and more, and hiscore.dat is a hack and has caused so called 'bugs' that weren't bugs in emulation and wasted dev time trying to fix them. They implemented savestate in the core and said hiscore.dat would be dropped but both would be included to give time for savestate to be added to the games (just like hiscore.dat, each game has to / had to have the feature added). After over a couple years of savestate and almost of year of autosave in mame, hiscore.dat was finally removed. (However, one of the reasons it was done was because very few games had savestate added; it seemed like if hiscore.dat supported a game, noone bothered adding savestate, IOW the hiscore.dat was slowing down support for savestate.)
This history is from a person (me) that doesn't care that much about seeing my high score stay between times I play (although I'm not against it), that looks at the source, (very rarely) helps debug, and compiles my own. So I'm pretty pro-savestate, but know that it doesn't cover all the games and isn't as steady as hiscore.dat ATM. Just to let you know my slant. Others here are pro-hiscore.dat. [shrug]