TIniFile.ReadSectionValues ultimately uses the Windows API function GetPrivateProfileString to read key values from the ini file. GetPrivateProfileString will remove any leading and trailing white space as well as any quotation marks surrounding the string.
This means that the line
[ key = value1 value2 value3 ]
will return the same value as the line
[ key=value1 value2 value3 ]
(square brackets added to show extra spaces).
In order to preserve any leading and trailing spaces, you will have to enclose your strings in either single or double quotation marks when writing them back into the ini.
As GetPrivateProfileString removes any surrounding quotation marks (single or double) you do not need to remove them when you read the values from the ini file.
To add the quotation marks you should NOT use a function AnsiQuotedStr function as Francois mentioned (edit unless you take special care to pick a quote char that is very very unlikely to be in the string in the first place). AnsiQuotedStr will add surrounding double quotation marks, but it will also double up any double quotation marks already in the string. While this is desired behaviour when you subsequently use AnsiDequoteStr, it is not when you use TIniFile to read the values as GetPrivateProfileString will remove the surrounding quoatation marks, but it will NOT de-double embedded ones.
So if you are going to read values from a file using TIniFile and want to preserve leading and trailing whitespace, you will have to add the surrounding quotation marks yourself and make sure that any embedded quotation marks are not doubled up (or you will have to de-double them yourself after reading them with TIniFile).