Tenho um pouco de conhecimento em C# e, até onde sei, a diferença entre C# e VB é quase apenas a sintaxe. Minha dúvida é que vi esta pergunta e as respostas (só há uma resposta) e, para ser sincero, não entendi qual é a relação entre a pergunta e a resposta :)
Então (até onde eu sei) em C# os elementos do array são alocados no heap (dentro do array).
O parágrafo (que está no livro) está errado ou esqueci de alguma coisa?
Essas últimas 4 palavras são um jargão. Os elementos estão dentro do array, que está no heap, então: eles estão no heap. Os elementos do array podem interagir inteiramente dentro desse local; por exemplo, chamar um método como esse geralmente
myComplexValueTyprArray[4].Whatever()
não copia o valor para a pilha em nenhum momento (pelo menos em C#). Copiar valores manualmente para dentro e para fora do array pode envolver a pilha, mas isso é outra coisa. A maior parte do resto parece estar correta.