Smartly joining possibly empty strings
On PowerShell v6+, I would do the following:
$String = $Fragment1, $Fragment2 |
    Where-Object { -not [System.String]::IsNullOrWhiteSpace($_) } |
    Join-String -Separator $Separator

You could use [System.String]::IsNullOrEmpty() instead of [System.String]::IsNullOrWhiteSpace(), but I find [System.String]::IsNullOrWhiteSpace() to be the desired functionality in almost all cases.
On Windows PowerShell (versions prior to v6), the Join-String command doesn't exist. There I would use:
$String = ($Fragment1, $Fragment2 |
    Where-Object { -not [System.String]::IsNullOrWhiteSpace($_) }) -join $Separator

The @().Where({ ... }) method is fairly obscure, so I tend to avoid it.

it may not be clear to everybody what the semantics of $_ are.

I'm not sure it's valuable to consider this possibility. Simply put, if your reader doesn't understand the semantics of $_, then they cannot read PowerShell. It's a ubiquitous and pervasive variable both in practice and in design.