So I went ahead and made another Roomba Virtual Wall. Everything else is pretty much the same as before, except I made each mounting layer one single ring, instead of 2 separate pieces. The single-piece design makes them easier to align and attach, at the expense of slightly longer print time and more filament used.
When soldering the proto-board, I tried moving the 3 resistors to the bottom of the board. Bad move. It was too crowded. In the end, I moved 2 of them back to the top.
I found that the IR LED that I used for this unit is actually the one I salvaged from the broken Roomba Virtual Wall because it has a very narrow degree of projection (2 ~ 3° at most). I thought the first unit had it.
What happened was, I was testing out the IR LED from the virtual wall and the old TV remote on the breadboard, and somehow got them mixed up. So I thought the first unit was using the IR LED from the broken virtual wall, but actually it had the TV remote IR LED, which makes sense now, because it has a much wider degree of projection (~30°).
For my own usage, it doesn't really matter, so I won't be making any changes. But if the IR beam needs to be as narrow as possible, then it pays to purchase an IR LED with that characteristic.