In our project, we create a package like so:

<Package 
    Name="<PACKAGE_NAME>"
    Id="<CONSTANT_GUID>" 
    <Variables>
        <Variable 
            Name="<VARIABLE_NAME>" 
            Id="<CONSTANT_GUID>" 
            DataType="Int32" 
        </Variable>
    </Variables>
    <Parameters>
        <Parameter 
            Name="<PARAMETER_NAME>" 
            Id="00000000-0000-0000-0000-000000000001" 
            DataType="Int32">0</Parameter>
    </Parameters>
[...]

Now, the Id for the package, as well as the variable, is being printed out as declared. However the parameter Id is still being randomly generated:

 

<DTS:Executable
[...]
  DTS:DTSID="00000000-0000-0000-0000-000000000001"
 [...]
  <DTS:Property
    DTS:Name="PackageFormatVersion">8</DTS:Property>
  <DTS:PackageParameters>
    <DTS:PackageParameter
      [...]
      DTS:DTSID="{86BC849B-6B60-481E-89F7-53B31775016A}" <- != "00000000-0000-0000-0000-000000000001" 
      DTS:ObjectName="<PARAMETER_NAME>"
      [...]
      <DTS:Property
        DTS:DataType="3"
        DTS:Name="ParameterValue">0</DTS:Property>
    </DTS:PackageParameter>
  </DTS:PackageParameters>
  <DTS:Variables>
    <DTS:Variable
      [...]
      DTS:DTSID="00000000-0000-0000-0000-000000000001"
      [...]
      DTS:ObjectName="<VARIABLE_NAME>"
      <DTS:VariableValue
        DTS:DataType="3">0</DTS:VariableValue>
    </DTS:Variable>
  </DTS:Variables>
[...]
 
Now, I dont see at which point this could be overwritten, unless there is some internal logic that permits the user from setting a package parameter id, but according to the documentation, it should be possible. Still, the logic on our side is so straight forward that it has to be another issue, I feel like. Really grasping for straws at this point.
 
Any help is appreciated