This is more of a style issue than anything else, and very susceptible to personal opinion.
The second example in the question more clearly shows intent, which increases the readability of the code, however with the first example, there is no way to have the variable become uninitialised by further code changes breaking the code.
You can however sidestep the problem entirely by defining it explicitly with a conditional operator (ternary):
let variable = some_boolean ? someDefaultVariable() : someOtherValue();
It's less commonly used, but should be in every programmer's toolbox for tasks like this. It shows both intent, and is 'cleaner' (less boiler-plate, and variable cannot be unassigned) which I suspect is the reason your colleague prefers the first form.
This answer would not be any different for C, which is actually my background, or most any other language, for that matter.