Also channeling does not work on skeletons when riding a spider (skeleton jockeys), above a non-air block.
However it does work with any of the zombie baby varients riding a chicken, when a baby piglin is riding a baby hoglin, or zombified variants of each. Channeling works on striders riding striders, but not zombiefied piglins riding striders as well.
While the reporter has commented that channeling works if passive mobs are in a boat, it does not work if the mobs hitbox is within the ground while in a boat, such as with wandering traders, striders and villagers.
On the other hand, channeling does work, if hostile mobs are in a boat, but their entire hitbox is outside the ground, such as by centering a boat and removing the block under it, so that it is balanced above the ground.
It also doesnt work, if any part of the mobs hitbox, is within another block, such as when a falling block is dropped on it (aside from shulkers) or when a block is pushed into it (again, aside from shulkers)
Channeling does, however, does work when a mob is standing on a shulker(mob), boat, or if it is falling.
It seems as if, the times channeling doesn't work, is just due to collisions with blocks that cannot be moved through like usual. As stated in the bug report description, this includes water, lava, cobweb, honey block, powdered snow, soul sand. It also happens when a mob is sitting in some other mobs, in some cases, such as when the ridings mobs hitbox is going through the lower mobs hitbox into a block. Even 8 snow layers, acts as if it is a full block, such as it attaches to fences. But when going through the block, you are 0.125m lower than a full block, therefore colliding with the hitbox of the 8 snow layers.
My personal assumption, is the reason that channeling might not work with colliding blocks, could be because the game presumes that it is under a block when it is touching one. So, instead of checking 1 block above the payer, it is checking at the player's feet. Since the game does not produce lightning, when the mob is under a block, it decides to not.
So, the possible reasoning by commenter Eric Rowley, isn't entirely off-base, since it is likely that it is due to a check for sky access. Similarly, the idea by Mod Urielsalis, is not off base either, since quite often, when lower than a full block, you are in a block as well, although not all the time.
The solution to this would be to check above the player's head, rather than his feet. Unfortunately, due to mechanics like crouching under slabs, the player can be in the same block, as the block, but still be under it. So the way this would need to be done, is check directly above the player, by 1/16 meters (1 pixel) and go up from there.
This is by design. They are supposed to despawn after 40 minutes of staying in loaded chunks in the world, regardless of what is done. What can be done, however, is that you can send them to unloaded chunks (f.e. in the nether) so that that clock does not count down. That way you can keep them for when you need them. Careful though, as you will only have 40 minutes with them.