I think James K has hit the nail on the head regarding traditional Conservative voters being willing to cast a Lib Dem protest vote while still regarding Labour as toxic. There are a couple of other factors, though, which I think are worth bearing in mind:
Firstly, the Labour candidate who ran in 2015, 2017 & 2019; Graeme Currie, was excluded from the local shortlist by the National Executive Committee because of concerns about historic social media posts. He released a statement where he described the NEC as a 'kangaroo court' using 'Stalinist tactics'. The relatively inexperienced 26-year-old Ben Wood was instead selected at the local hustings, but it's conceivable that the exclusion of a locally well-known and seemingly well-liked candidate could have contributed to voter apathy or a willingness to vote Lib Dem for Currie's supporters.
Secondly, there have been murmurings that Labour made a strategic choice to not prioritise the seat, perhaps understanding that the LD candidate had more of a chance of flipping the seat. Former Lib Dem leader, Tim Farron, tweeted:
Starmer made a wise strategic choice not to prioritise a rural /
market town seat where their ceiling was always going to be lower than
ours. Almost as wise as @EdwardJDavey choosing to chuck the kitchen
sink at it!
In the FT on December 2nd, there was also a suggestion that there was a sort of unofficial quid-pro-quo deal between Labour and the Lib Dems, for the LDs to not campaign hard in the Old Bexley and Sidcup in exchange for Labour running a skeleton campaign in North Shropshire:
Although both opposition parties insist there is no formal deal, the
Lib Dems have fought a minimal campaign ahead of Thursday’s Old Bexley
and Sidcup contest in south-east London, giving Labour a clear run in
a solidly Tory seat.
Meanwhile, Labour has decided not to campaign heavily in the
Shropshire North by-election on December 16, even though the party
finished second there in the 2019 general election, allowing the Lib
Dems to be the focus for anti-Tory protest.
Labour strategists have said the rural Shropshire seat — left vacant
after the resignation of former minister Owen Paterson in the sleaze
row — is inhospitable terrain for the party and not worth spending
scarce resources on.
One said: “We can see the Lib Dems have focused on Shropshire North
and they’ll probably end up a good second there. They came second in
the recent local elections — from their perspective it makes sense for
them to concentrate their resources there.”
Furthermore, Shadow Business Secretary Jonathan Reynolds told BBC Breakfast on the morning of the election result that the party "put the effort into it that was proportionate to our chances of winning".