plan() takes into account the leaf script + control block for Taproot but not the witness script for P2WSH. This results in getting the maximum witness size for the plan (witness_size()) sometimes taking into account the full satisfaction size (under Taproot) and sometimes not (under P2WSH), which is rather confusing.
As a hack we leveraged the explicit_script function to add the script size only under P2WSH since it returns None for Taproot: https://github.com/wizardsardine/liana/blob/bdc0b50ad9780ea29b77703c513a99fb5876fb21/src/descriptors/mod.rs#L261-L274