An implicit argument is used to capture some context of the call site, providing additional infrastructure to make things work (e.g. an ExecutionContext). Passing these along manually is just a burden and boiler-plate to be avoided. In the case of the implicit Timeout the case used to be more clear than it is now; the Timeout type was created as a wrapper for Duration precisely for the purpose of being used implicitly, since we deemed Duration to be more like Int (i.e. too generic a type to capture implicitly).

In the case under discussion here you use the implicit to change the semantics of the method call rather drastically, and it is implicit only to avoid having to pass a second argument.