If you take a look at the documentation, you will find the details around this. It just works as any standard Http contract implementation and not necessarily on map concepts.
Apex REST supports two formats for representations of resources: JSON and XML. JSON representations are passed by default in the body of a request or response, and the format is indicated by the Content-Type property in the HTTP header. You can retrieve the body as a Blob from the HttpRequest object if there are no parameters to the Apex method. If parameters are defined in the Apex method, an attempt is made to deserialize the request body into those parameters. If the Apex method has a non-void return type, the resource representation is serialized into the response body.
It's the request header content type which determines if the body is to be deserialized in a specific format or not, and not the request body contents itself.
If you accept parameters in your POST method, that's when the name of the parameters matter. Refer to the below excerpt from the same documentation link:
The names of the Apex parameters matter, although the order doesn’t.