### Apache Airflow version

2.3.3 (latest released)

### What happened

I change my DAG from 
```python
with DAG(
   'test',
    access_control={'team':{'can_edit','can_read'}},
) as dag:
   ...
```

to

```python
with DAG(
   'test',
) as dag:
   ...
```

Remove `access_control` arguments, Scheduler can't sync permissions to db.

If we write code like this,

```python
with DAG(
   'test',
   access_control = {'team': {}}
) as dag:
   ...
```

It works.

### What you think should happen instead

It should clear permissions to `test` DAG on Role `team`.

I think we should give a consistent behaviour of permissions sync. If we give `access_control` argument, permissions assigned in Web will clear when we update DAG file.

### How to reproduce

_No response_

### Operating System

CentOS Linux release 7.9.2009 (Core)

### Versions of Apache Airflow Providers

```
airflow-code-editor==5.2.2
apache-airflow==2.3.3
apache-airflow-providers-celery==3.0.0
apache-airflow-providers-ftp==3.0.0
apache-airflow-providers-http==3.0.0
apache-airflow-providers-imap==3.0.0
apache-airflow-providers-microsoft-psrp==2.0.0
apache-airflow-providers-microsoft-winrm==3.0.0
apache-airflow-providers-mysql==3.0.0
apache-airflow-providers-redis==3.0.0
apache-airflow-providers-samba==4.0.0
apache-airflow-providers-sftp==3.0.0
apache-airflow-providers-sqlite==3.0.0
apache-airflow-providers-ssh==3.0.0
```

### Deployment

Virtualenv installation

### Deployment details

_No response_

### 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)

"""
        Helper method to process a file generated from the input create_dag function.
        """
        
        source = textwrap.dedent("".join(inspect.getsource(create_dag).splitlines(True)[1:-1]))
        with NamedTemporaryFile() as f:
            f.write(source.encode("utf8"))
            f.flush()
            dagbag = models.DagBag(dag_folder=self.empty_dir, include_examples=False)
            found_dags = dagbag.process_file(f.name)
            return dagbag, found_dags, f.name
    def validate_dags(self, expected_parent_dag, actual_found_dags, actual_dagbag, should_be_found=True):
        expected_dag_ids = list(map(lambda dag: dag.dag_id, expected_parent_dag.subdags))
        expected_dag_ids.append(expected_parent_dag.dag_id)
        actual_found_dag_ids = list(map(lambda dag: dag.dag_id, actual_found_dags))
        for dag_id in expected_dag_ids:
            actual_dagbag.log.info("validating %s", dag_id)
            assert (dag_id in actual_found_dag_ids) == should_be_found, (
                f"dag \"{dag_id}\" should {'' if should_be_found else 'not '}"
                f'have been found after processing dag "{expected_parent_dag.dag_id}"'
            )
            assert (dag_id in actual_dagbag.dags) == should_be_found, (
                f"dag \"{dag_id}\" should {'' if should_be_found else 'not '}"
                f'be in dagbag.dags after processing dag "{expected_parent_dag.dag_id}"'
            )
    def test_load_subdags(self):