### Apache Airflow Provider(s)

google

### Versions of Apache Airflow Providers

_No response_

### Apache Airflow version

2.1.4

### Operating System

Container-Optimized OS with Containerd

### Deployment

Composer

### Deployment details

_No response_

### What happened

I am trying to load some files from GCS to BigQuery. To get the list of files which matches the prefix, I am using the GoogleCloudStorageListOperator which pushes the output to XCOM.

XCOM Push from GoogleCloudStorageListOperator:
['file1.csv', 'file2.csv', 'file3.csv', 'file4.csv', 'file5.csv']

When I am pulling the list from XCOM to use for BigQuery Load operation, it is getting rendered like:
**[**['file1.csv', 'file2.csv', 'file3.csv', 'file4.csv', 'file5.csv']**]**

Due to this I am getting the below error in GCSToBigQueryOperator :
Source URI must not contain the ',' character: gs://inbound-bucket/[['file1.csv', 'file2.csv', 'file3.csv', 'file4.csv', 'file5.csv']]

The code I am using can be found below.
_dag = DAG(AIRFLOW_DAG_ID, default_args = default_values, description = "google_operator_test", catchup = False, max_active_runs = 1 ,render_template_as_native_obj=True, schedule_interval = None)
get_gcs_file_list = GoogleCloudStorageListOperator(
	task_id= "get_gcs_file_list_1",
	google_cloud_storage_conn_id = "temp_google_access",
	bucket= "inbound-bucket",
	prefix= source_object_location,
	delimiter= '.csv',
    dag = dag)
#Load the data from GCS to BQ
load_to_bq_stage = GCSToBigQueryOperator(
    task_id= "bqload",
    bigquery_conn_id = "temp_google_access",
    google_cloud_storage_conn_id  = "temp_google_access",
    bucket= "inbound-bucket",
    source_objects= '{{task_instance.xcom_pull(task_ids="get_gcs_file_list_1")}}',
    destination_project_dataset_table= dataset + "." + target_table,
    write_disposition='WRITE_TRUNCATE',
    field_delimiter = '|',
    dag=dag)_

### What you expected to happen

The list should be rendered as is by the GCSToBigQueryOperator.

### How to reproduce

1. Push a list of strings in to XCOM
2. Perform XCOM pull in  source_objects parameter of GCSToBigQueryOperator  like below,
source_objects ='{{task_instance.xcom_pull(task_ids="task_name")}}'
3. Notice that the rendered source_objects have an extra parenthesis added.

### Anything else

There is a validation performed in the operator’s constructor to check whether or not the source_objecst datatype is a list. If is it not a list, then it’s presumed to be a string and wrap it as a list.Because source_objects is a template field, the field value isn’t evaluated until the task runs (aka meaning the value isn’t rendered until the execute() method of the operator).
https://github.com/apache/airflow/blob/6eac2e0807a8be5f39178f079db28ebcd2f83621/airflow/providers/google/cloud/transfers/gcs_to_bigquery.py#L219

### Are you willing to submit PR?

- [ ] Yes I am willing to submit a PR!

### Code of Conduct

- [X] I agree to follow this project's [Code of Conduct](https://github.com/apache/airflow/blob/main/CODE_OF_CONDUCT.md)

airflow/providers/google/cloud/transfers/gcs_to_bigquery.py
:param ignore_unknown_values: [Optional] Indicates if BigQuery should allow
        extra values that are not represented in the table schema.
        If true, the extra values are ignored. If false, records with extra columns
        are treated as bad records, and if there are too many bad records, an
        invalid error is returned in the job result.
    :type ignore_unknown_values: bool
    :param allow_quoted_newlines: Whether to allow quoted newlines (true) or not (false).
    :type allow_quoted_newlines: bool
    :param allow_jagged_rows: Accept rows that are missing trailing optional columns.
        The missing values are treated as nulls. If false, records with missing trailing
        columns are treated as bad records, and if there are too many bad records, an
        invalid error is returned in the job result. Only applicable to CSV, ignored
        for other formats.
    :type allow_jagged_rows: bool
    :param encoding: The character encoding of the data. See:
        https://cloud.google.com/bigquery/docs/reference/rest/v2/jobs#configuration.query.tableDefinitions.(key).csvOptions.encoding
        https://cloud.google.com/bigquery/docs/reference/rest/v2/tables#externalDataConfiguration.csvOptions.encoding
    :param max_id_key: If set, the name of a column in the BigQuery table
        that's to be loaded. This will be used to select the MAX value from
        BigQuery after the load occurs. The results will be returned by the
        execute() command, which in turn gets stored in XCom for future
        operators to use. This can be helpful with incremental loads--during
        future executions, you can pick up from the max ID.
    :type max_id_key: str
    :param bigquery_conn_id: (Optional) The connection ID used to connect to Google Cloud and
        interact with the BigQuery service.
    :type bigquery_conn_id: str
    :param google_cloud_storage_conn_id: (Optional) The connection ID used to connect to Google Cloud
        and interact with the Google Cloud Storage service.
    :type google_cloud_storage_conn_id: str