Sure, the "nice" way of doing it is to rely on the raster interrupt. But I've also seen way too much C64 code where pretty much everything ran in the interrupt handler, with associated stupid busy waiting because it saved people from having to synchronise. I'd guess more commonly for cheap and cheerful ports from less capable machines, but it's been a couple of decades since I've actually looked at any of this code.