Wether a DOF is eliminated by static condensation or not is given by the FESpace, not the element itself.
Any DOFs of coupling type LOCAL_DOF are eliminated. Those of INTERFACE_DOF and WIREBASKET_DOF
remain. The bddc Preconditioner further reduces the problem to only the WIREBASKET_DOF ones. Per default, all DOFs are seen as wirebasket DOFs.
On the C++ side, the FESpace has an array called "ctofdof", which gives the coupling type for every DOF.
You have to overload the "UpdateCouplingDofArray" method of the FESpace and set it there. (See, for example, comp/h1hofespace.cpp, lines 776-831)
Alternatively, you can also set it from python via the "SetCouplingType" method of the FESpace.
You should be able to reuse the bddc preconditioner as long as you set the ctofdof array correctly.
Best,
Lukas