Schema Multiple Areas Served (AreaServed)

I think each value should represent a single area.

If you were using the more expressive AdministrativeArea/GeoShape/Place values, you would (by definition) use one type per area (a Place always represents a single place etc.), so there is no reason to assume that a Text value would be handled in a different manner. Furthermore, the definition of areaServed doesn’t refer to multiple values, and so it doesn’t define a separator (like ,).

So instead of

"areaServed": "Bournemouth, Poole, Dorset",

I think it’s better to use

"areaServed": ["Bournemouth", "Poole", "Dorset"],

Another option is to use 'GeoCircle' to set a radius around the business location, much like on Google My Business. This is my preferred option.

The 'geoRadius' is set in metres:

"areaServed": {
    "@type": "GeoCircle",
    "name": "XYZ  service area",
    "geoMidpoint": {
        "@type": "GeoCoordinates",
        "postalCode": "12345",
        "latitude": "12.33456789",
        "longitude": "-12.3456789",
        "description": "Our office location can be found here.",
        "name": "XYZ geo location"
    },
    "geoRadius": "20000",