Почему метод className() в yii2-basic не работает как надо?
в Yii advanced предварительно устанавливаются базовые алиасы, т.е. приблизительно схема такая:
1. Устанавливаются алиасы
2. Загружается конфигурация
3. Запускает приложение с загруженной конфигурацией
Соответственно на момент загрузки конфигурации php уже знает к какому алиасу какой путь относиться.  В basic же предварительной установки алиасов не производиться, т.е. загружается конфигурация, потом запускается приложение, в процессе запуска которого происходит установка алиасов. Поэтому в момент загрузки конфига php просто еще не знает что такое app. Т.е. Вы обращаетесь к классу app\models\User::className() но php в этот момент не знает что такое app, т.к. этот алиас еще не определен.  
Вы можете самостоятельно определить алиасы до момента загрузки приложения используя метод Yii::setAlias
После шатаний по коду фреймворка выяснилось, что дело, действительно, как подметил Максим Федоров, в том, что в приложении app-advanced мы до запуска приложения определяем алиас common путем подгрузки файла bootstrap, в том время как в приложении app-basic мы не определяем в процессе загрузки алиас app. В этом и отличие.
Единственное с чем я не могу согласиться - что app и common это алиасы. В действительности это, конечно же, неймспейсы. Но автолоадер фреймворка устроен так, что когда принимает неймспейс, он добавляет к нему собачку и превращает в алиас вот здесь, а уже там ищет эти классы.