
Here's a gif of it properly managing to pathfind around that bottom section

Sometimes he pathfinds, sometimes he doesn't. It gets even worse if you use step_size, and it's very inconsistent. step_size 4 seems to be fairly "alright", though it still breaks occasionally, whereas step_size 5 or 1 are almost completely broken always.
Source for reference:
turf
icon = 'Turf.dmi'
dense
density = 1
icon = 'Turf.dmi'
icon_state = "Wall"
mob
icon = 'Icon.dmi'
//step_size = 5
world
fps = 30
view = 8
mob = /mob/player
mob/player
density = 0
mob/ai
var/mob/target = null
New()
..()
spawn(1)
// step_size = 4
target = locate(/mob/player)
spawn for()
step_to(src,target)
sleep(2)