In either case, you’ll probably want to add some safety checks for existing models and tables. If someone sends along table_name=svbywb or model_name=avbyewibw in a request, your current code would fail with an SQL error – unless you just magically happen to have a table called svbywb or a model called Avbyewibw.
Other than that, the two approaches are fairly equivalent. Your first approach needlessly fetches a model instance, updates a few fields and then saves it (so two database queries) instead of just updating. This would do the same, but with just one query:
$model = "\App\Models\{$request->model_name}";
$model::where('id', $id)->update(['v1' => 'new1', 'v2' => 'new2']);
Notice how, if you do it that way, the only difference between the two approaches is whether you use DB::table($request->table_name) or the implicitly called $model::query() to create the actual query builder. As soon as you have the builder, the rest is exactly the same.