I'm not going to pretend I came up with this myself or understand the underlying JUCE implications, but this seems to have fixed it.
In this file:
HISE/JUCE/modules/juce_audio_processors/processors/juce_AudioProcessor.cpp
Modify the setValueNotifyingHost function to abort if the value hasn't actually changed:
void AudioProcessorParameter::setValueNotifyingHost (float newValue)
{
// Abort if the value hasn't changed. This prevents redundant DAW notifications
// during UI initialization that cause Ableton to incorrectly disable automation.
if (getValue() == newValue) return;
setValue (newValue);
sendValueChangedMessageToListeners (newValue);
}
I haven't noticed any other side effects so far π€