В первом случае:
fn chto_to(&self) -> impl StringAnalyzer;
impl Trait значит, что функция возвращает неизвестную структуру, которая реализует трейт.
Возвращаемое значение определяется компилятором в момент объявления функции.
Внутри трейтов он это не может (хотя вроде хотят в будущем разрешить)
Во втором случае:
fn lexing<T>(&self) -> T where T: StringAnalyzer;
Тут возвращаемое значение определяется по месту вызова.
Если ты хочешь impl Trait использовать в трейтах - ты можешь использовать associated type:
pub trait NewTrait {
type AssociatedType: ExistingTrait;
fn function() -> Self::AssociatedType;
}