I've never understood why the lowercase l and 1 so often look the same in monospace fonts. It's not like anyone actually writes an l like that — why not just a small bottom right hook? And maybe a top left hook as well? But a whole base is insanity.
I agree that this is a bad decision for programming, but the reason most fixed-width fonts do that is that they can look visually uneven if they don't use exaggerated serifs on narrow characters. It can even get to the point where words look like they have spaces in them if the wrong characters are next to each other.
Monospace (https://monaspace.githubnext.com/) has a feature that dynamically changes between different versions of characters and moves them inside their space in the font grid to make up for that. But even so, its bottom serifs on 1, I, and l extend to both sides.
Cascadia Code (https://github.com/microsoft/cascadia-code) has a lower-case L whose bottom serif only extends to the right. It's the typeface I use for writing code, and IMO, it's currently the best option available.