
As far as I can see, the A* algorithm is only guaranteed to produce any of the equally weighted paths (the grey area in the left image). The JPS will always choose a path on one edge of the equally weighted path area. A natural path will go down the middle of the equally weighted area. I believe the A* algorithm can very easily be weighted slightly to always produce the natural path (by including a very small weight component relative to the crow flies distance from the target), at least in the zero obstruction case.
It would be likely that the JPS algorithm, which produces long path segments, could probably be used and then have the actual path taken be either: The path suggested by the next path segment; or cut the corner by taking the direct path from the current point to the next next segment end, if there are no obstacles along that route. This latter test is relatively trivial. Since the JPS algorithm would never generate a case where the route turns one way and then turns back except in the presences of an obstacle, this should result it a good approximation of natural path.
But I haven't played Factorio in a while, and mostly ignore the bugs, so I don't know how much of an issue it is with the current path finding for bugs taking unnatural paths.