The git plugin supports a reference repository from its "Advanced clone options". A reference repository reduces the clone time and the disk space for the history portion of a repository clone by creating pointers into a bare repository on the same computer.
The git plugin supports shallow clone from its "Advanced clone options". A shallow clone reduces the clone time and disk space for the history portion of a repository clone by only cloning a certain number of commits rather than the entire history. With git versions after 1.9, I believe it can still push new commits from a shallow clone.
The git plugin allows sparse checkouts from the "Sparse checkout" additional behaviour. Sparse checkouts reduce disc space for the working directory portion of the clone by using a subset of the working directory to be checked out instead of the full working directory.
Each of those options can be assigned in a Jenkinsfile. The pipeline snippet generator knows how to create those options when you choose git in the snippet generator.
I still haven't found the "best" way to handle those additional git plugin options when dealing with merges between long-lived git branches. When I assign those types of options, I seem to also be required to assign a branch to be built, though I don't want that git "branch to be built" to merge between long-lived branches.