Okay, I think I've found the cause: the liftable is colliding with itself (rather, its "idle prop") so we need a special exception for that. Something like this should work better:
var blocked = false;
with(parent_terrain){ if(place_meeting(x,y - 4,other)){ if(id != other.idleprop){ blocked = true; } } }
if(!blocked){ y += 4 with(idleprop){ y += 4 } }