This question was answered by C3roe in the comments. I was incorrectly using the $ behind every capture group. C3roe also helped with the .html extension, an issue I had not realised yet I was having.
My RewriteRule should have been:
RewriteRule ^webshop/(.*)/detail/(.*)/(.*)\.html$ https://newsite.com/shop/$1/$3/ [R=301,NC,L]
Thanks!
(if I could have selected the comment as the answer, I would have.)