Imagine a situation you'd like to deprecate / remove arg2. Eventually you'd be able to make
init(arg1: Int = 1, arg2: Int = 2) unavailable... but in everything from init(arg1: Int = 1, arg2: Int = 2, arg3: Int = 3) and up you'd have to keep arg2 forever...
I'd seriously consider the fluent approach (at least add it to the alternatives considered). For me it feels more scalable and DRY. Do you see any shortcomings of that compared to init?