you could use viz.intersect and have your line start just below the ball and then go straight down far enough to cross the plane the block is in. If an intersection happens then you reset the position of the block. Something like this.
Code:
def moveBlock():
x,y,z = ball.getPosition()
info = viz.intersect([x,y-1,z],[x,y-5,z])
if info.valid:
info.object.setPosition([0,-10,0], viz.REL_LOCAL)
vizact.ontimer(0,moveBlock)