Если вы посмотрите на определение Wrap в FSI, вы увидите, что оператор static (+) определен только для типов, поддерживающих ограничение, но сам Wrap определен для любых типов.
Когданаписать первую версию, вывод типа добавляет это ограничение для вас ... но ваша вторая версия допускает любой тип для x (даже для x, которые не поддерживают оператор static (+)).
Т.е. втораяверсия предполагает, что можно написать функцию, которая будет поддерживать любой тип Wrap <'T>, хотя нет никакой гарантии, что T поддерживает оператор +.
edit: как отметил Томас, это возможно, но у вас естьЧтобы использовать специальный синтаксис, который определяет, какой член вызывать, работает следующее:
let inline addSelf (x : Wrap<_>) =
((^a or ^b): (static member (+) : ^a * ^b -> ^c) (x,x))