You'd think that, wouldn't you? And it'd be perfectly sensible to expect that ... but Templates can contain snapshots, and they even need to contain snapshots for some operations.
vSphere doesn't let you see snapshots in a template (and now doesn't even let you delete a template that contains a snapshot, claiming that the VM is in an invalid state), but any snapshots that were present in the VM that the template was made from are preserved when a VM is turned into a Template (so that's how one creates a snapshot in a Template - turn it into a VM, add/remove snapshots as needed, then turn it back into a Template).
As far as I am aware, you need a snapshot in order to make a linked-clone. According to vSphere's documentation, setting the VirtualMachineRelocateSpec's diskMoveType field to "createNewChildDiskBacking"...
is only safe if the clone was taken from a snapshot point, because snapshot points are always read-only. Thus for a clone this option is only valid when cloning from a snapshot.
So, unless the vSphere documentation is wrong, to create a linked-clone VM off a Template, you need a snapshot in that Template.
FYI what the plugin has to do is to fill out a VirtualMachineCloneSpec, which in turn contains all the data describing how the new VM is to be created. This contains the "config" field which holds the VirtualMachineRelocateSpec which is where we set diskMoveType to either "createNewChildDiskBacking" (linked clone) or "moveAllDiskBackingsAndDisallowSharing" (a full-fat copy, which usually takes ages). This also contains the "snapshot" field which I've previously found has to be non-null for a linked clone to work, even when cloning a template.
Personally, I suspect that vSphere themselves haven't quite made up their mind what the difference is between a Template and a VM. Personally, I would've expected a Template to effectively be a VM with an implicit readonly single "Latest" snapshot and that turning a VM into a Template would remove all user-defined snapshots and leave you with just a single vSphere-defined "this is what the template looks like" snapshot within the Template and's both invisible and implicit such that cloning from that Template is always a clone based off that Template's implicit snapshot ... but that's not how it works.
It may be, of course, that vSphere's functionality has changed over the years and my old findings are now out of date such that it'd be possible to relax some of these "you must have a snapshot, even on a template" requirements these days; if you can provide information showing this then I'm all ears