Here is an xaml definition i pulled off the example you linked, so we have something concrete to talk about.
<Path Stroke="Black" StrokeThickness="3" Fill="Blue" >
<Path.Data>
<GeometryGroup >
<LineGeometry StartPoint="20,200" EndPoint="300,200" />
<EllipseGeometry Center="80,150" RadiusX="50" RadiusY="50" />
<RectangleGeometry Rect="80,167 150 30"/>
</GeometryGroup>
</Path.Data>
</Path>
Where is the origin of this path? It does not define one. If you remove the LineGeometry from this group and its now in a group of its own, does it still begin at 20,200? Yes.
So lets make up some arbitrary rules.
The first geometry in any group is always a LineGeometry of zero length, that is, its StartPoint and EndPoint are the same. This geometry defines the origin. This LineGeometry is never removed from a group; only shapes below it are added and removed.
When you remove a geometry from a group, you subtract any positional data by the origin.
When you add a geometry to a group, you add to any positional data by the origin.
Example, you want to move the EllipseGeometry from Path1 to Path2...
// Path1
<Path Stroke="Black" StrokeThickness="3" Fill="Blue" >
<Path.Data>
<GeometryGroup >
<LineGeometry StartPoint="100,0" EndPoint="100,0" />
<EllipseGeometry Center="100,0" RadiusX="50" RadiusY="50" />
</GeometryGroup>
</Path.Data>
</Path>
// Path2
<Path Stroke="Black" StrokeThickness="3" Fill="Blue" >
<Path.Data>
<GeometryGroup >
<LineGeometry StartPoint="100,100" EndPoint="100,100" />
</GeometryGroup>
</Path.Data>
</Path>
Remove EllipseGeometry from Path1...
EllipseGeometry.Center = 100,0 - 100,0 = 0,0
Add EllipseGeometry to Path2...
EllipseGeometry.Center = 0,0 + 100,100 = 100,100
Tadda, the ellipse which previously rendered at the origin of one path now renders at the origin of another path.