I have seen this behavior a lot in CuraEngine slices. Mostly older versions of the slicer. Not sure if they actually improved it.
You could see this a lot in long and complicated forms. I also don't like this. Not only for unnecessary moves, but also for imperfections due the start in the middle. Sometimes you can tell where the filling started and which segments were printed separately.
I think it comes down to several issues here:
1.) Starting from the middle saves a move at the beginning of the fill. It probably starts the fill where is stopped printing the perimeter. If the change you want would be implemented, a move after the fill printing would become necessary to start at the right position. So therefore the benefit of faster printing might be gone already.
2.) For the sclicer implementation it is hard to do. The algorithm that computes the print moves for the fill just knows the start point (end position of last perimeter line) and the points that define the area. It does not know if the area is round or square or shaped like a "C" or like a "Y". Usually the slicers have a preferred direction that changes with every layer. This way the fill lines of different layers cross each other and that probably increases stability.
I have seen slices where the fill started several times in "C" shaped prints.
Also if you think about the "Y" shape. If you start at the bottom then you can print horizontal lines and fill the form until you reach the split. Now you have to decide which arm to print fist. And then you have to do the other arm separately.
As you can see a perfect way to fill all possible shapes in one go is impossible.
And defining an algorithm that can fill any shape with only knowing the outline is already hard. I assume the solution has to do with splitting a form into segments and to then fill each segment after the other. Even your example form has probably more sections than only the two obvious ones.
What could be done would be to "optimize" the sequence used to fill the segments. Basically adding a computing step that checks if by introducing a move to the best starting point the fill of the segments could be done in one move.
Again that is probably rather hard to do, but CuraEngine and other slicers are open source, so if you or somebody else would like to invest some time to get this feature that would be great!