I tried changing the thickness of the edge cuts line to 0.0001" and that seemed to do the trick, KiCad and OSH Park now agree on the size. The only down side is when the line is that thin in KiCad it becomes hard to select for edit, so it will probably be a thing I do last, or I'll probably just create a pre-submit script that changes "(layer Edge.Cuts) (width 0.15)" to "(layer Edge.Cuts) (width 0.00254)".
I'm submitting the kicad_pcb file directly, not sure if the same thing happens with gerbers.
Just changing the thickness of the line saved me $0.05USD for the exact same board, so if my math is right OSH Park has picked our pockets for over a million dollars! (disclaimer: math is not right)
I kid of course, it's just nice to have it match up so I don't have to move the lines around to get the size I expect.