Обычный Tuple - ссылочный (класс) и выделяет дополнительную память в куче.
ValueTuple - структура и не выделяет дополнительную память в куче.
Анонимный тип = анонимный класс. Имени у него нет (на самом деле есть, но ты не сможешь его назвать), но есть имена у свойств.
У кортежа даже имён свойств нет.
Анонимные типы можно использовать и это даже неизбежно, если ты пользуешься linq.