alias - это синоним.
На практике этот синоним поддерживает операцию получения адреса объекта, а значит хранит где-то этот адрес, за исключением оптимизаций. Так вот ячейка памяти, хранящая чей-то адрес, как была указателем, так и остаётся.
Что касаемо оптимизаций, то они просты. Если ссылка на деле указывает на объект в стеке/глобальный объект или как в примере с 456 ни на что не указывает, то нет нужды хранить указатель в памяти и выполнять операцию разыменования. Однако я уже привёл пример с goto, когда реальное значение ссылки меняется. Следовательно, компилятор либо всегда безопасно реализует ссылки через указатели, либо анализирует поток управления.
Ещё раз повторю. Ссылка не синоним. Ведь синоним можно было бы заменить оригинальным объектом во всех местах упоминания. Скажем, если ref является синонимом s[0], то упоминание ref можно было бы заменить на s[0], но это не так по двум причинам:
1) s[0] может скрыто вести к вызову метода, а значит это выражение динамическое. Единственный остающийся вариант всегда указывать на то, что когда-то было s[0] — это хранить указатель или адрес памяти.
2) Пример с goto показывает, что поменять адрес у ссылки можно. После этого она и логически (s[1], s[2]) и физически (&s[1], &s[2]) указывает на новый объект.
Тут у меня вопросов к Defective C++ FQA Lite нет.
P.S. Я ничего не критикую, просто мистика и чёрная магия в описаниях к реальной практике отношения имеют мало.