Out of interest I checked that the basic KerasTuner logic described in the tutorial here (Getting started with KerasTuner 5) works with decision forest model the same way as with neural networks.
def build_model(hp):
    """Function initializes the model and defines search space.
    :param hp: Hyperparameters
    :return: Compiled TensorFlow model
    """
    model = tfdf.keras.GradientBoostedTreesModel(
        num_trees=hp.Int('num_trees', min_value=10, max_value=510, step=50),
        max_depth=hp.Int('max_depth', min_value=3, max_value=16, step=1))
    model.compile(metrics=['accuracy'])
    return model

tuner = kt.RandomSearch(
    build_model,
    objective='val_loss',
    max_trials=5)

tuner.search(X_train, y_train, epochs=1, validation_data=(X_valid, y_valid))