For custom inventory classes there is delgrp, but for custom attributes that were added to the discovery tables via DDR there isn't a tool out there.  Here is a sample stored procedure that should do the trick - as always when directly editing the database be sure to make a backup before hand. Before running queries or procedures like this that modify the discovery tables be sure to shut down the SMS services on the site server, close any open admin UI instances, and shut down WMI on the provider server.

So, for example to remove a property named "SomePropertyName" from the System discovery class:

sp_RemoveDiscoveryProperty 'SomePropertyName', 'System'

SET QUOTED_IDENTIFIER OFF

IF OBJECT_ID ( 'sp_RemoveDiscoveryProperty', 'P' ) IS NOT NULL
DROP PROCEDURE sp_RemoveDiscoveryProperty;
GO
CREATE PROCEDURE sp_RemoveDiscoveryProperty
@propName varchar(255),
@discArchName varchar(255)
AS
BEGIN
DECLARE @columnName varchar(255)
DECLARE @archBase varchar(255)
DECLARE @discArchKey int

select @archBase = BaseTableName, @discArchKey = DiscArchKey from DiscoveryArchitectures where DiscArchName = @discArchName
IF @archBase = NULL
BEGIN
PRINT "Architecture '" + @discArchName + "' not found, aborting..."
RETURN (-1)
END
select @columnName = ColumnName from DiscPropertyDefs where DiscArchKey = @discArchKey and PropertyName = @propName

IF @columnName = NULL
BEGIN
PRINT "The property '" + @propName + "' was not found in the DiscPropertyDefs table, aborting..."
RETURN (-1)
END

PRINT "Removing property '" + @propName + "' from the DiscPropertyDefs table."
delete DiscPropertyDefs where DiscArchKey = @discArchKey and ColumnName = @columnName

PRINT "Removing column '" + @columnName + "' from the '" + @archBase + "' table."
EXECUTE ("alter table " + @archBase + " DROP COLUMN " + @columnName)

PRINT "Recreating the resource view for architecture '" + @discArchName + "'"
EXEC sp_CreateResourceView @discArchKey
END