Suppose that $D_1$ and $D_2$ are virtual diagrams of oriented virtual knots with the same oriented Gauss code (each crossing in the code contains the following information: crossing number, over/under, crossing type - "+/-"). Is it true that $D1$ and $D_2$ are the same with respect to generalized Reidemeister moves (classical + virtual)? - i. e. they represent the same virtual knot?
Yes, if two virtual knot diagrams of oriented virtual knots have the same oriented Gauss codes, then they are virtually equivalent. In fact, the only kinds of diagrammatic moves needed after reconstructing the diagram are the virtual Reidemeister I and II moves along with the rule for moving a "virtual strand" over a crossing.
A way to think of virtual crossings is that they are merely artifacts of trying to draw on the plane a not-necessarily-planar $4$-regular graph with a rotation system, where the vertices are classical crossings. A Gauss code is a convenient way of capturing the data of the kinds of $4$-regular graphs we see from knot diagrams. In the history of the subject, general Gauss codes are virtual knots.
I am curious exactly what you mean by a diagram for a virtual knot. With the Gauss code approach, the diagram represents the combinatorial data of the Gauss code. With a diagrammatic approach, the diagram is the virtual knot. With a Carter-Kamada-Saito approach, a virtual knot is a knot in a thickened surface (or a knot diagram on a surface) up to a stabilization move. With a Kuperberg approach, a virtual knot is just a knot in a thickened surface which is in some sense of minimal genus. Only in these last two is there really a geometric object that a virtual knot diagram is a diagram of.
If you take virtual knot diagrams as the definition of a virtual knot, then the way you can prove the moves I mentioned are sufficient is to think about how the Gauss code says that each classical crossing (thought of as a vertex in a graph) is connected to each other vertex in the exact same way in each diagram, and then take each edge in the first graph one at a time and isotope it to how it appears in the second graph, taking care of recording which moves occur during this isotopy. The only kinds of bad intermediate diagrams are when the edge passes through a classical crossing, when it begins to pass through an edge virtually, or when the edge twists virtually.