The hardware that game runs on has a register that reflects the CRT status in detail, and that's probably wrong to some degree in most or all emulators. The games heavily depend on it, and will sit in loops to wait for certain conditions.
e.g. here's one from battle garegga (there are more): 002236 -- -- -- -- 3f07 move.w D7, -(A7)
002238 -- -- 3e39 0021 c03c move.w $21c03c.l, D7
00223e -- -- -- 6b00 0008 bmi 2248
002242 -- -- 3e39 0021 c03c move.w $21c03c.l, D7
002248 -- -- -- -- 5307 subq.b #1, D7
00224a -- -- -- 0c07 00ee cmpi.b #-$12, D7
00224e -- -- -- -- 64e8 bcc 2238
002250 -- -- -- -- 3e1f move.w (A7)+, D7
002252 -- -- -- -- 4e75 rts
Get that register right, and it affects both the slowdown and the sprites moving out of sync (my current source code is a bit better with the CPU at 100%). These games are a part of the reason for the CPU overclocking feature in fba.
Batrider also has some weirdness with the sound communication, though that only seems to affect the attract mode. FBA's drivers need an update to synchronise the cpus and sound better, but that probavly won't affect the slowdown at all.