I'm not convinced that's a helpful comparison. Wouldn't you usually want to avoid leaving a trail when a sprite moves?
In fact, if you change the demo the other way, i.e. by clearing the screen in each sync in each case, paste image is much faster (on my even crappier laptop admittedly

).
I've pasted the images/sprites in random positions to simulate movement in an application.
I get 6.5 and 14.4 seconds for the image and sprite methods respectively. Paste image wins.
#constant NUMBER_OF_FRAMES = 1000
sync on
sync rate 0
box 0, 0, 64, 64, rgb(255,0,0), rgb(255,0,0), rgb(255,0,0), rgb(255,0,0)
get image 1, 0, 0, 64, 64
cls
` From my plug-ins - makes TIMER() more accurate
set timer resolution 1
print "Press any key to start"
while scancode() = 0
sync
endwhile
` Simulate 100 sprites
start = timer()
for i = 1 to NUMBER_OF_FRAMES
cls ` added this line ************
for s = 1 to 100
paste image 1, rnd(300), rnd(300), 1
next
sync
next
finish = timer()
ImageTime = Finish - Start
` Set up 100 real sprites
for s = 1 to 100
sprite s, 256, 256, 1
next
` No backsave, same as when pasting images
set sprite 1, 1, 1 ` not essential now since this is the default ************
` 100 Actual sprites, with equivalent positioning/setup
Start = timer()
for i = 1 to NUMBER_OF_FRAMES
for s = 1 to 100
sprite s, rnd(300), rnd(300), 1
next
sync
next
Finish = timer()
SpriteTime = Finish - Start
for s = 1 to 100
delete sprite s
next
cls
print ImageTime
print SpriteTime
sync off
wait key
end