Draft strategy is obviously a balance between a lot of factors, but to me the one that trumps all of them is this: You want to add competition to as many position groups as you can. Need is a factor, but you're not going into the draft saying, "We need a WR to fill this specific role." That's when you reach. N'Keal adds competition to the WR group.
Any sure fire, can't miss, cracker-jack prospect who'll be ready to start and contribute on day one is going to be GONE in the top ten. By the time you reach 32, everyone from that point on has question marks, concerns, or flat out known flaws that are unlikely to change. That's why they're still on the board. You can't count on that player to fill a need, because you have no way of knowing if they're going to be ready to do that in year one. Again, need is a factor, but you can't be a slave to it, or you pass on a better player, which ends up creating MORE holes in future years.
Let's say they reached (based on their board) for a tight end in the second round instead of taking Williams. Then that pick doesn't work out, as many reaches tend not to do. Then, after his restructure, the Pats don't want to pay Gilmore 19m+ next year, cut him, and he walks. Instead of having a tall, talented CB with a year in the system, now you're looking to fill a "need" in next year's draft, and everyone is wondering why BB isn't prioritizing CB in the 2020 draft.
Add competition to as many groups as you can. Need is a factor in the opportunity for that competition certainly, but it is not the critical variable in that equation. Fill your roster with good football players that you believe you can coach effectively, and let the roster take care of itself. Then fill the remaining holes with trades or by tweaking your scheme to fit the strengths of those you have.