It's not pretty, but you could use a stored procedure with execute AS permissions and then grant the user in question access to that procedure. Here is something that should work to get you started.
This link https://sqlstudies.com/2014/02/26/impersonating-a-server-level-permissions/ goes into more detail about using EXECUTE AS in production code. Needless to say, use this with caution and make sure you really need/want to do it.
CREATE PROCEDURE usp_KillConnection (@SessionID INT = NULL)
WITH EXECUTE AS 'domain\privilegeduser'
AS
DECLARE @KillCmd NVARCHAR(4000)
IF @SessionID IS NULL
BEGIN
--Just return all sessions for the valid database.
SELECT * FROM sys.sysprocesses WHERE DB_NAME(dbid) = 'DatabaseName';
END
ELSE
BEGIN
--Check to make sure the passed in session is attached to the valid database (no cheating!)
IF EXISTS (SELECT TOP 1 1 FROM sys.sysprocesses WHERE @SessionID = spid AND DB_NAME(dbid) = 'DatabaseName')
BEGIN
--Show the information for that specific session.
SELECT * FROM sys.sysprocesses WHERE @SessionID = spid AND DB_NAME(dbid) = 'DatabaseName';
--Kill the session.
SET @KillCmd = 'KILL ' + CAST(@SessionID AS NVARCHAR(5));
EXEC sp_executesql @KillCmd;
END
ELSE
BEGIN
--throw an error if they try and kill a session that is not in the database they have access to.
;THROW 50000, 'Requested Session ID is not attached to a valid database', 1;
END
END