I believe that the two options are almost never mutually exclusive. I expect students to do HW problems on their own and solve problems in lecture. However, to choose the best option for your class, the key first step is to ask yourself "Why am I asking the students to solve problems at all?" There are tons of benefits to having students solve problems, and you should be able to answer this questions with the reasons that are most important to you.
Here are some potential reasons (there are countless others)
You want feedback as to how much they are understanding the material to allow you to adjust your how you proceed with the class accordingly. This is pretty broad, it can mean how do I proceed in the next 10 minutes of lecture, or how do I proceed 10 lectures from now.
You want to give students direct feedback on their problem solving skills, attitudes, and techniques, in real time.
You want them to sharpen their reasoning, and problem solving skills through practice.
You want them to improve their understanding of the material through practice
You want them to be able to apply their knowledge of the material to new situations
When I give problems in lecture, they tend to be of a different flavor. I am specifically targeting reasons (1-2). I use both hard and easy problems to address (1). For example, If I do a basic computation on the board I might give the class 30 sec to start the problem (or finish the problem) on paper before I go over it. This gives the struggling students a chance to figure out what they are confused about, but also doesn't give the stronger students enough time to get board and distracted. The more time you pause for student self reflection the more questions they ask.
However, I also ask questions that probe for deeper understanding. For example you can ask a tricky true or false question and poll the class, via clickers or via hand raising. This gives them a chance to take a intuitive "guess" at the answer, and then "solve" the problem afterwards. Often students jump into problems haphazardly, and this technique reinforces that students should be thinking about what they expect is true or false before they do the problem. It helps improve their "mathematical intuition." I like to pick questions that are hard enough that at least half the class gets it wrong (to minimize embarrassment choosing a wrong answer). After polling the class, I pair up students that think the statement is true and the ones that think it is false. Other times I pair up trues with trues and falses with falses; interestingly, this often leads to people changing their mind as well. In each case, I poll the class again. Then we discuss the intricacies behind the question.
An example problem is a great way to start a lecture. You can tell how well the students understood the reading or HW this way, and adjust your lecture on the fly based on their response. This will proactively prevent the blank stare you get when you say "Any questions?" 10 minutes into your lecture.
I tend to leave basic computation questions for HW or for a student lead TA tutoring/discussion section, and use lecture for applied and theoretical questions. In the HW I focus on 4, but also have problems targeting 3 and 5.
summary: In lecture I tend to focus on two types of problems (1) the ones that give me feedback in real time, which I then use to adjust the pace, content and style of my lecture, and (2) the ones that allow me to modify student behavior and attitudes towards mathematics. I leave problems that are mainly for practice for time outside of lecture, and also include problems that reinforce the student habits I emphasize in class.