If -fd is set too high it will miss the sync pulse causing an additional frame of lag. In theory, if -fd is set so high that the sync pulse is consistently missed for each frame, it will appear to run perfectly smooth, despite the added latency.
This can be verified by inspecting the log when the game is run with -v, "probably missed retrace" messages should appear.
e.g. GM ASIO 0.171 reports frame delay should be set to 5 when I test game kov2106:
mame64 kov2106 -bench 240
SwitchRes: [kov2106] (1) horizontal (448x224@60.000000)->(1920x1080@60.000000)
Frame delay/percentage: 3/0.11% 5/9.33% 6/90.56%
Average speed: 350.42% (239 seconds)
but if I set frame delay to 8, everything is OK.
The game is run a solid 60 fps, I'm curious what's the different of frame delay 5 or 8.
What you see here is probably a game with variable game speed. The game *does* vary in speed, but not necessarily in gameplay, which might explain why you're not noticing anything (if it's really oscillating, you should see more over-/underruns than usual). Also, the measurement routine isn't perfect, but neither is the -bench option. If you really want to get to the bottom of the issue, you could inspect the log created with -asio_log with Octave, the scripts are somewhere in the GM ASIO thread.
Also, you should always run the benchmark at least twice to rule out issues from interfering background processes.
Edit: I read your post wrong, I thought it said 5/9.33%
8/90.56%. So read the above with this in mind, the most likely explanation is the one Calamity provided.