### Apache Airflow Provider(s)

google

### Versions of Apache Airflow Providers

List of versions is the one provided by Cloud Composer image `composer-1.17.7-airflow-2.1.4`.
(cf. https://cloud.google.com/composer/docs/concepts/versioning/composer-versions#images )

Relevant here is `apache-airflow-providers-google==5.1.0`

### Apache Airflow version

2.1.4

### Deployment

Composer

### Deployment details

_No response_

### What happened

Found on version 2.1.4 and reproduced locally on main branch (v2.2.3).

When using `SFTPToGCSOperator` with `gzip=True`, no compression is actually performed, the files are copied/moved as-is to GCS.

This happens because the `gzip` parameter isn't passed to the GCS Hook `upload()` call which then defaults to `False`.


### What you expected to happen

I expect the files to be compressed when `gzip=True`.


### How to reproduce

Create any `SFTPToGCSOperator` with `gzip=True` and upload a file.

### Anything else

_No response_

### Are you willing to submit PR?

- [X] 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/sftp_to_gcs.py
:type sftp_conn_id: str
    :param delegate_to: The account to impersonate using domain-wide delegation of authority,
        if any. For this to work, the service account making the request must have
        domain-wide delegation enabled.
    :type delegate_to: str
    :param mime_type: The mime-type string
    :type mime_type: str
    :param gzip: Allows for file to be compressed and uploaded as gzip
    :type gzip: bool
    :param move_object: When move object is True, the object is moved instead
        of copied to the new location. This is the equivalent of a mv command
        as opposed to a cp command.
    :type move_object: bool
    :param impersonation_chain: Optional service account to impersonate using short-term
        credentials, or chained list of accounts required to get the access_token
        of the last account in the list, which will be impersonated in the request.
        If set as a string, the account must grant the originating account
        the Service Account Token Creator IAM role.
        If set as a sequence, the identities from the list must grant
        Service Account Token Creator IAM role to the directly preceding identity, with first
        account from the list granting this role to the originating account (templated).
    :type impersonation_chain: Union[str, Sequence[str]]
    """
    template_fields = (
        "source_path",
        "destination_path",
        "destination_bucket",
        "impersonation_chain",
    )
    def __init__(