the problem with your "for" code , that I think you placed inside the Update(), is that it get executed in one update cicle. In Unity you must think the Update as a 'frame' execution.
Plus, that for seems useles. Where do you use the "i" variable?

So you must do something like this into the Update(), (I missed the starting and end management)

    //small dist is a float value greater of 0 but not to big that you must initialize in the //Start()
    if ((transform.position - spaces[currentPosition+i]).magnitude < smalDist)
    {
     // I reached next element 
     
     if (i==diceResult){
       //reached destination
       // STOp The movement 
     }
     i++;
     transform.position = Vector3.MoveTowards(transform.position,
        spaces[currentPosition+i].transform.position,Time.deltaTime / smooth );
    }