Technically, there is a small variation in behavior between your snippets when calling virtual functions from the base class's constructor, but making virtual function calls during construction is bad practice anyway, so let's ignore that.
I'd prefer the second. If you have overloaded constructors, it saves some copy/pasting, and no one has to remember to write the assignment statement - the compiler takes care of all that.
If calculation of the assigned value is too complex or is cannot be assigned to a field initializer, I'd have a protected (or private) default constructor
class Foo
{
private Foo() { _second = SomeComplexCalculation(); }
public Foo(string first) : this()
{
_first = first;
}
}
If the order of assignment matters, then I'll have a private function do the initialization.