У data.table есть оправдание - он ориентирован на скорость. Поэтому integer и numeric отличает. А тайди не такой уж быстрый, чтобы не приводить типы. Мне эта строгость не нравится тем, что фрагментирует всю экосистему. Здесь у нас так, здесь у нас этак... Я не слышал, чтобы кто-то жаловался , что при джойне колонки приводятся к общему типу. На drop = TRUE и stringsAsFactors полно жалоб. А приведение типов никому не мешало. Зачем с этим бороться и фрагментировать язык, совсем непонятно...
так в результате получится, что только в df можно джойнить по колонкам разного типа
то есть, просто происходит перераспределение доли и все, в сторону более строгого поведения
я думаю, там еще и чисто логические проблемы - когда ключи разного типа, надо держать в голове и в коде, к какому происходит приведение. и поддерживать этот, в общем-то, костыль, от которого пользы мало, а вреда много.