Why after copying a JuMP model it does not own the initial model variables?

You can also use copy_model instead of copy to get a map that converts original models into their copied equivalents: Models · JuMP

c1 = [-2 ; 4]
A1 = [-3 1 ; -1 0 ]
b1 = [-2 ; -1]
sub = Model()
@variable(sub, 0 ≤ y[1:2] )
@objective(sub, Min, c1' * y )
@constraint(sub, A1 * y .≥ b1)
sub_0, index_map = copy_model(sub)
c2 = @constraint(sub_0, - index_map[y[1]] ≥ 0 )