O uso de membros flexíveis da matriz em C é uma prática ruim?

Li recentemente que o uso de membros de matriz flexíveis em C era uma prática ruim de engenharia de software. No entanto, essa afirmação não foi apoiada por nenhum argumento. Isso é um fato aceito?

(Membros de matriz flexíveis são um recurso C introduzido em C99, no qual é possível declarar o último elemento como uma matriz de tamanho não especificado. Por exemplo: )

struct header {
    size_t len;
    unsigned char data[];
};

questionAnswers(7)

yourAnswerToTheQuestion