Здравствуйте, niXman, Вы писали:
X>первый — более универсальный.
чем это?

учитывая что у unique_ptr нет копирующего конструктора, первый вариант попросту не возможен!
X>второй — более тюнингованный 
собственно он же и единственный. для передачи владения нужно явно делать std::move(ptr).