Você não pode tratar um gatilho como se ele tratasse uma linha de cada vez. Se a inserção ocorrer usando uma cláusula de vários valores ou uma seleção aninhada, o gatilho será acionado uma vez para toda a operação, o que significa que você só lidará com um @UserID arbitrário.
Aqui eu suponho que sua tabela PlaneGPSCoordinates tenha exatamente 5 linhas e que essas são as coordenadas que cada novo usuário obtém.
CREATE TRIGGER dbo.Matching
ON dbo.UserInfo
FOR INSERT
AS
BEGIN
SET NOCOUNT ON;
INSERT dbo.MatchingInformation(GPS1, GPS2, UserID)
SELECT p.GPS1, p.GPS2, i.UserID
FROM dbo.PlaneGPSCoordinates AS p
CROSS JOIN inserted AS i;
END
GO
Mas isso levanta a questão, por que copiar as mesmas coordenadas para todos os usuários? Isso é algo que eles vão atualizar com frequência, você só quer colocar alguns valores padrão lá para começar?