There could be a number of factors that affect the movement of surface water in sources such as, streams and rivers. These may include wind, bed slope, type of rocks, obstructions (say by vegetation), bed shape, etc.
The wind creates currents and causes motion. Bed slope or steepness of bed may also define how fast or slow the surface water will move. A steeper slope is associated with higher velocities, while a gentle slope will cause slow flow. Higher velocities will also enable movement of materials carried by river (such as silt), while slower velocities would force the settlement of such material, causing obstructions in its own path. Any obstruction in the path of water causes change of course (depending on the size or magnitude of obstructions). This can be seen in embankments and cutting by the streams. The rock types in the region and bed also affect the water motion. Another important factor related to the flow is the interaction between surface and groundwater.
Hope this helps.