LDS addresses are byte addresses where the lowest 2 bits are always 0. i.e. valid LDS addresses are 0, 4, 8, 12, 16 etc.
So if you want to store a float (which is 32 bits), you would store at address 4, for example. But if you want to store a byte, you have to find the 4-byte bucket in LDS that is the destination, then "merge" the byte you want to store into the 4 bytes you've fetched.
See UBIT_INSERT and UBIT_EXTRACT.
Looking at the Evergreen ISA doc, I can see that the hardware does have support for bytewise access to LDS memory. However it is not exposed in IL yet as far as I know. At present LDS access must be dword aligned much like UAV access. The current exception to the rule seems to be an arena UAV which allows byte and short access. You can only define one of them and the access is rather slow from what I am told.