Primero, podrias generar una tabla que solo contenga los consecutivos para evitar el ciclo / cursor.
 
Solo tendrias que crearla una vez y utilizarla cada que requieras de su funcionalidad....  
Código:
 SET NOCOUNT ON
IF OBJECT_ID('tbl_Consecutive') IS NOT NULL  Drop Table tbl_Consecutive
CREATE TABLE tbl_Consecutive (iId int NOT NULL)
DECLARE @i BIGINT
SET @i = 0
-- Agrega tantos segun el maximo que esperas iterar
WHILE @i < 100000
BEGIN
    INSERT INTO tbl_Consecutive (iId) VALUES(@i)   
    SET @i = @i + 1;
END
ALTER TABLE tbl_Consecutive ADD PRIMARY KEY (iId)
PRINT 'TABLE FINISHED'
  
Despues con un solo select con joins insertas directamente la info en tu tabla destino...  
Código:
 INSERT INTO Carga_Boleta_Match(
             boleta
            ,CveArticulo
            ,DescArticulo
            ,Peso
            ,Peso2
            ,Comentario
) 
SELECT       a.boleta
            ,c.CveArticulo
            ,c.DescArticulo
            ,c.Peso
            ,(Peso / CantidadPrendas) AS peso2
            ,'Validar' AS comentario
FROM         MOMBEF_Trabajo a 
INNER JOIN   MOMBDF_1  b 
ON           a.Boleta = b.boleta     AND
             CAST(a.sucursal AS BIGINT) = b.sucursal  
INNER JOIN   MOARCF_1 c
ON           b.cveArticulo=c.CveArticulo
INNER JOIN   tbl_Consecutive d
ON           d.iId < b.CantidadPrendas
  
 Saludos!