The way I reason is that the 2D surfaces are built with vertexes and not pixels.
Well by this argument, you don't want 0 and 640 at all, because those are pixel units. Drawing in vertex units would be between 0 and 1. Honestly, I can't think of another engine which does 2D in 3D differently to how TV does it, and I've used a lot. It's just human nature to think in pixels when you're drawing 2d.
If that was the case then we should not have a screen coordinate value of 0, because then we wont have 640, we will have 641
Correct, we shouldn't have a 640, and from my results, we don't have one.
What I'm saying is rendering with primitives orthographically with vertexes should at least match how they are done for example in OpenGL.
Well by that argument, TV should use a right-handed coordinate system too. Sorry, but TV doesn't even use OpenGL so there's no logical reason for TV to ape OpenGL.
It doesnt feel correct, doing a -1 compensation everywhere sounds insane.
It doesn't feel correct to you because you're used to OpenGL. Lots of things will be different moving from OpenGL to an API built on DirectX. Things working on ATI drivers, for example. (Joke!)
I don't really see the problem, to be honest. If you really find it awkward, just wrap TV's drawing commands with a function which subtracts 1. Then you only ever have to do it once.