What is the best approach to deploying to multiple servers using Jenkins?
Have you looked at the Matrix project plugin?

Multi-Configuration Projects
A multi-configuration project is useful for instances where your
builds will make many similar build steps, and you would otherwise be
duplicating steps.
Configuration matrix
The Configuration Matrix allows you to specify what steps to
duplicate, and create a multiple-axis graph of the type of builds to
create.

Welcome to the Matrix is an excellent reference doc.
Example (from the blog) - Pipeline for multiple platforms and browsers

Jenkinsfile

pipeline {
    agent none
    stages {
        stage('BuildAndTest') {
            matrix {
                agent any
                axes {
                    axis {
                        name 'PLATFORM'
                        values 'linux', 'windows', 'mac'
                    }
                    axis {
                        name 'BROWSER'
                        values 'firefox', 'chrome', 'safari', 'edge'
                    }
                }
                stages {
                    stage('Build') {
                        steps {
                            echo &quot;Do Build for ${PLATFORM} - ${BROWSER}&quot;
                        }
                    }
                    stage('Test') {
                        steps {
                            echo &quot;Do Test for ${PLATFORM} - ${BROWSER}&quot;
                        }
                    }
                }
            }
        }
    }
}