Evil's handling of cursor (column) position is inconsistent with both vim & emacs
It seems that some of the evil-mode magic breaks cursor column behaviour for both vim & emacs.
Easy way to reproduce -- open any file containing lines of different length. On the longest line put cursor at the end-of-line ($) and then move it down to shorter line & back up to the longer one.
Vim & vanilla emacs have slightly different behaviour here, and evil is different from both of them.