Честно говоря, оставить implicit в Scala 3 было правильно, и меня это всё равно раздражает каждую неделю.
Правильно, потому что никому не пришлось переписывать кодовую базу в первый же день. Старые implicit по-прежнему компилируются, Scala 3 может использовать библиотеки, собранные для 2.13, а на given и using можно переходить по одному файлу.
Раздражает, потому что наполовину переведённый файл читать труднее всего. Один экземпляр приходит из implicit val, следующий из given, и чтобы найти, откуда взялось значение, надо держать в голове оба набора правил. Сами по себе новые правила лучше. Импорт со звёздочкой вроде import foo.* больше не подтягивает given-экземпляры, нужно писать import foo.given, и импорт сам говорит, что приносит. Неявные преобразования теперь идут через Conversion, и если пользоваться ими без импорта scala.language.implicitConversions, будет предупреждение о языковой возможности.
Так что да, совместимость победила. Цена в том, что читателю ещё долго носить в голове две модели, а даты, когда старую уберут, я пока не видел.