Internally, format_args! is constructed in a way that prevents it from being assigned to a variable (it creates temporary arrays that don't live long enough).
It's not the temporary arrays that are the issue, it's the function calls blocking lifetime extension of those arrays. I've re-implemented format_args! as a macro but using struct-constructor syntax instead of function calls and it allows this sort of binding just fine.