There are two reasons it doesn't follow the cloth well. The first is subdivision, which changes the UV map. You can change the way that subdivision creates UVs for subdivided verts by changing settings for UV smooth in the modifier (in "advanced" dropdown as of 2.90.)
The second reason is triangulation of quads that don't map perfectly from their 3D shape to the their 2D shape-- that is, quads with UV distortion. This is a big issue that means that making something in a 2D image editing application is never going to be perfect on anything that has any amount of UV distortion.
Solving the second issue means not using a 2D application to make your stripes. There are a number of ways to paint the stripes in Blender or in another 3D application like Substance Painter. You can paint them using Blender's texture paint mode, but I think you'll find that it's difficult to get things as perfect as you'd like doing that. Changing the stroke type to line or curve will probably help.
An alternative is to create a different mesh and use selected-to-active baking to bake the color from that different mesh. How would I make that mesh? I would probably make it out of strings of vertices that were shrinkwrapped to the shirt mesh, with a skin modifier. I would then apply these modifiers and join to a negatively displaced copy of the shirt. After that, I can give them a material and use selected-to-active baking, on diffuse color or emit mode, to bake the color of those stripes to a texture using the shirt's UV coordinates.