Technically, there are no “dashes” in a GUID. A GUID is a 128-bit value which is usually stored in the following manner (using C# here to represent the structure):
public struct Guid
{
public ulong Data1;
public ushort Data2;
public ushort Data3;
public fixed byte Data4[8];
}
The dashes are in the string representation of a GUID.
The dashes are optional and are not required in a string representation of a GUID.
That said, there are historical reasons as to where the placement of the dashes are, related to how the GUIDs were generated, but that historical semantic no longer applies.