### Elasticsearch Version

8.0.0

### Installed Plugins

_No response_

### Java Version

_bundled_

### OS Version

Elastic Cloud

### Problem Description

Spotted in Elastic Cloud when autoscaling is enabled with only 1 zone for ML.

Using third party model deployments as an example, when the resources of a currently provisioned ML node have been exceeded, the user should still be able to start trained model deployments and the existing node resources should be scaled up.

**Current observed behavior**
If autoscaling is limited to just 1 ML node/zone, autoscaling doesn’t work if an ML node is provisioned but it doesn't have enough resources to fit new workloads.



### Steps to Reproduce

1. Create a deployment in Elastic Cloud using v8.0.0, autoscaling enabled and only 1 ML zone.
2. Upload and start a third party trained model deployment
3. Wait for autoscaling to provision an ML node
4. Try uploading/starting more third party trained model deployment until currently available resources are exceeded
5. Notice that instead of upscaling the ML node, the trained model start command fails claiming "not enough resources available".

### Logs (if relevant)

_No response_
x-pack/plugin/ml/src/test/java/org/elasticsearch/xpack/ml/job/JobNodeSelectorTests.java
Job job = BaseMlIntegTestCase.createFareQuoteJob("job_id1000", ByteSizeValue.ofMb(10)).build(new Date());
        when(memoryTracker.getJobMemoryRequirement(anyString(), eq("job_id1000"))).thenReturn(1000L);
        JobNodeSelector jobNodeSelector = new JobNodeSelector(
            cs.build(),
            shuffled(cs.nodes()),
            job.getId(),
            MlTasks.JOB_TASK_NAME,
            memoryTracker,
            randomIntBetween(1, 3),
            node -> nodeFilter(node, job)
        );
        PersistentTasksCustomMetadata.Assignment result = jobNodeSelector.selectNode(
            maxRunningJobsPerNode,
            2,
            maxMachineMemoryPercent,
            10L,
            false
        );
        assertNull(result.getExecutorNode());
        assertThat(
            result.getExplanation(),
            containsString(
                "[job_id1000] not waiting for node assignment as estimated job size "
                    + "[31458280] is greater than largest possible job size [3]"
            )
        );
    }
    public void testPerceivedCapacityAndMaxFreeMemory() {
        DiscoveryNodes nodes = DiscoveryNodes.builder()
            .add(