There's an idea I like, which is to
listen to the code. If you find yourself doing something and the code resists, there's a reason for it. Sometimes it means your code design needs to evolve, sometimes it means your idea needs to evolve. So if you're doing something you don't like here, it's often a good idea to stop, step back and consider what that means.
Out of curiosity, why do they need the clock in the first place? I mean, by the looks of things the clock gets the total number of ticks the game has been running for, not the number of ticks the game needs to be updated by. The latter seems like the more relevant information for a frame update.
Look at it this way, let's call the thing that manages sprites your SpriteController. And say it has an update function that takes a dt:
Telling it
spriteController.update() is completely hiding the dependency on time, whilst
spriteController.update(clock) tells it this code relies on the clock but it's still not clear why or how that'll be used, and it means the update itself is more complicated.
spriteController.update(deltatime) immediately reveals that this function will call update on all the sprites by a given deltatime, which is the information that the spriteController would of been pulling out of the clock in the 2nd example and thus that update is simpler.
Also, if I remember correctly the preference in games is for the rendering pass to be a read-only view of the game state, and for animations to be handled by the game logic pass (which operates with a fixed time-step).