How to stop WordPress from removing & from URL?

Here’s the why part:

This part of the redirect_canonical() is removing the leading & in the redirect query part:

// tack on any additional query vars
$redirect['query'] = preg_replace( '#^\??&*?#', '', $redirect['query'] );

Example:

example.tld/?&a=1&b=2&c=3 

is redirected to

example.tld/?a=1&b=2&c=3 

If you must have the leading & you might try to adjust it through the redirect_canonical filter:

/**
 * Filter the canonical redirect URL.
 *
 * Returning false to this filter will cancel the redirect.
 *
 * @since 2.3.0
 *
 * @param string $redirect_url  The redirect URL.
 * @param string $requested_url The requested URL.
 */
$redirect_url = apply_filters( 'redirect_canonical', $redirect_url, $requested_url );