After Steve's Answer I traced SQL Servers activity to find out more:
First the initial deployment with "myInitialDescription":
exec CreateObject
@ItemID='CC754C47-4E02-42A1-9F71-9ABF84FBE30A',@Name=N'TestReport',@Path=N'/myReports/Folder1/TestReport',@ParentID='36CE605B-F030-4A0E-BC3C-C51C8C423427',@Type=2,@Content=0x3.....743E,@Intermediate='AAAAAAAA-3967-457B-B23D-780D34489A30',@Property=N'<Properties>
<Language>de-DE</Language>
<HasUserProfileQueryDependencies>False</HasUserProfileQueryDependencies>
<HasUserProfileReportDependencies>False</HasUserProfileReportDependencies>
<PageHeight>297.000007629395</PageHeight>
<PageWidth>210</PageWidth>
<TopMargin>20</TopMargin>
<BottomMargin>20</BottomMargin>
<LeftMargin>20</LeftMargin>
<RightMargin>20</RightMargin>
</Properties>',@Parameter=N'<Parameters>
<UserProfileState>0</UserProfileState>
<ParametersLayout>
<ParametersGridLayoutDefinition>
<NumberOfColumns>4</NumberOfColumns>
<NumberOfRows>2</NumberOfRows>
</ParametersGridLayoutDefinition>
</ParametersLayout>
</Parameters>',@Description=N'myInitialDescription',@Hidden=0,@CreatedBySid=0x010500000000000515000000235F636BB4B7CD22828BA62802120000,@CreatedByName=N'domain\me',@AuthType=1,@CreationDate='2016-09-14 16:31:00.960',@ModificationDate='2016-09-14 16:31:00.960',@SubType=default
Then the Update process:
exec GetAllProperties @Path=N'/myReports/Folder1/TestReport',@AuthType=1
Returned:
Description = myInitialDescription
After that:
exec SetAllProperties @Path=N'/myReports/Folder1/TestReport',@Property=N'<Properties>
<Language>de-DE</Language>
<HasUserProfileQueryDependencies>False</HasUserProfileQueryDependencies>
<HasUserProfileReportDependencies>False</HasUserProfileReportDependencies>
<PageHeight>297.000007629395</PageHeight>
<PageWidth>210</PageWidth>
<TopMargin>20</TopMargin>
<BottomMargin>20</BottomMargin>
<LeftMargin>20</LeftMargin>
<RightMargin>20</RightMargin>
</Properties>',@Description=N'myInitialDescription',@Hidden=0,@ModifiedBySid=0x010500000000000515000000235F636BB4B7CD22828CC62802120000,@ModifiedByName=N'domain\me',@AuthType=1,@ModifiedDate='2016-09-14 16:38:36.550'
Excerpt of the SetAllProperties Procedure:
UPDATE Catalog
SET Property = @Property, Description = @Description, Hidden = @Hidden, ModifiedByID = @ModifiedByID, ModifiedDate = @ModifiedDate
WHERE Path = @Path
So right here we can see that the old DESCRIPTION is taken out of the previous version into memory and then gets passed to update itself with the old value instead of the new!