I think I figured it out, the list of supported thermostat modes needs quotes around each mode in the JSON_OBJECT (I expect the same will be true for fan modes). I was able to setup a virtual thermostat device, noticed the quotes in the attribute, so tested with and without quotes and was able to replicate the issue with the virtual thermostat.
This configuration works in a dashboard:

This does not:

@bikesquid - Are you able to double-check this on your thermostat devices?