El escritor de NetworkX GEXF genera una ID de borde - enteros que comienzan en 0 - si no se especifica uno. Dado que agregó un segundo borde sin una ID (borde 1,2) se usó una ID de 0 que choca con su primer ID de borde.
Puede ser un error y ciertamente causa un problema con su caso de uso. Una solución es establecer explícitamente una ID de borde cuando agrega el nodo.
In [1]: import networkx as nx
In [2]: G = nx.read_gexf('first.gexf')
In [3]: G.edges(data=True)
Out[3]: [('1', '0', {'id': '0'})]
In [4]: G.add_edge(1,2,id=1)
In [5]: G.edges(data=True)
Out[5]: [('1', '0', {'id': '0'}), (2, 1, {'id': 1})]