I've managed to solve the problem. I configured the component as follows:
ClientCodePage=UTF8
ControlsCodePage=cCP_UTF8
RawCharacterTransliterateOptions
Encoding=encDB_CP
Fields=True
Params=False
SQL=False
Properties
AutoEncodeStrings=True
codepage=UTF8
RawStringEncoding=DB_CP
In other words, in Lazarus everything is in UTF-8, and Firebird handles the conversion when saving the data. When trying to perform the conversion from within the component, Firebird was converting it again and generating garbage. With the configuration I've set up, the data arrives clean in UTF-8, and when Firebird sees that the database character set is ISO8859_1, it performs the conversion and therefore saves the data without garbage.