Why region_name is required for some aws services in boto3.client while using regional endpoint?

Why do we need to provide region_name if we are already using regional endpoints?

And also, If I don’t specify region_name for sqs then It’ll give an Error (NoRegionError : You must specify a region). While creating client for s3, region_name is not required.

client = boto3.client(
    "sqs",
    aws_access_key_id=key_id,
    aws_secret_access_key=secret_key,
    aws_session_token=token,
    endpoint_url="https://sqs.us-east-1.amazonaws.com",
    region_name="us-east-1",  # For some reason region name is required here
)

client = boto3.client(
    "s3",
    aws_access_key_id=key_id,
    aws_secret_access_key=secret_key,
    aws_session_token=token,
    endpoint_url="https://s3.ap-south-1.amazonaws.com", # While this works perfect
    )