The Panel saves different kinds of input in different ways in structure fields, for example, it makes a difference if you just store a single word or multi-line text. In the same way, it handles different sorts of input, it seems, I don’t really know for what reason, if this is sort of automatic or to work around some issues. Maybe it’s just the way it is when input is yaml encoded (at least using that library). Do you use Kirby’s yaml::encode when you save to file?
The input you want to save here really is an edge case for hex color values.
I would assume that nothing will change in the parser because 1E4477 is a valid floating number as for the specs.
And the only way to let the parser know that this is a string is using quotes or the multiline syntax as @texnixe mentioned.