in Neovim and it works as expected
In Neovim, when in Normal Mode, do you have a block cursor, or a line cursor? I am guessing that if you have a line cursor, it would appear that the cursor is to the right of the last character.
If you have a block cursor, which is what Obsidian uses in Vim mode, then it will appear to be over top of the last character in the line. A line cursor on the other hand, shows up as between characters, so at the end of a line, it shows to the right of the last character.
Obsidian:

Neovim with a block cursor:

I’ve configured my Vim so that when I’m in Normal Mode, I see a block cursor, which more precisely tells me where I am. “I am on the last character in the line”. When I’m in Insert Mode, I see a line cursor, which more precisely tells me where text will insert. (In my opinion/experience.)
This is how Obsidian works. When you go into Insert Mode, it goes back to a line cursor. So I experience no difference in how this behaves between Obsidian and Vim.