Usual approach is just creating multiple pages . I have a client in janitorial industry and for them, most competitors were following the same approach.
But to be honest, those other pages (like service in city-1, service in city-2, will in end have just same type of content and will convey the same thing as other pages).
Hence, not advisable to create multiple pages as usually it is done. Instead you can create a locations block and use it at multiple places to trigger those city keywords. If your client is limited to a state or two, definitely don't proceed to creating multiple city specific pages.
For clients serving multiple states, this approach can still be considered.
To add, even if we donot consider SEO, managing so many pages after a longer run is painful.
We have ranked this janitorial client established in 2018-19 above some established names like Merry Maids so I personally can vouch for this strategy to work.