As you show, templates require quotes. And that might be part of why HASS is seeing a string. But I wonder if some alternate methods of expressing the data might work.
Like
xy_color: >-
[{{states.light.bank.attributes.xy_color | first}},{{states.light.bank.attributes.xy_color | last }}]
or
xy_color:
- {{states.light.bank.attributes.xy_color | first}}
- {{states.light.bank.attributes.xy_color | last }}