I'm using a theme of my own, a very basic one. If you want, I can pass it to you (or anyone else) for testing.
My fonts setup (nothing fancy, and even simpler and more regular than the default theme setup):
* Workbench icon font: DejaVu Sans/15
* Drawer icon font: DejaVu Sans/15
* Drawer text font: DejaVu Sans Mono/15
* System default font: DejaVu Sans Mono/15
* Screen font: DejaVu Sans/15
The font used by both the shell and the completion list is DejaVu Sans Mono/15. The spacing of the popup list differs from the shell's (as shown in the examples in my initial post).
With the default theme, the 3-item test case gives a good result (same spacing):

However, if I use the default theme font settings with my theme, the result is still affected by the same problems (different spacing and short list). Therefore, this is not related to the fonts setup.
Since there is nothing in the GUI/Console preferences related to this sort of spacing, it seems that, at best, the console is making some guess according to some unrelated parameter (at worst, it would be just a bug). I'll try to fiddle with the GUI preferences to find out which parameter that might be (if any). But the point is that, of course, the behaviour should be correct regardless of the theme.
BTW, I'm not sure what you mean by "regenerated", but maybe this is related to that: I have saved this theme I'm using with the current GUI preferences program.
Regarding the maximum height and the alignment of the list...
I have made some other tests and measured the maximum height of the list, and I confirm that it is about 1/3 of the screen height. However, I have to admit I fail to see the logic there, as, regardless of the list height, it is always possible to align one of its lines to the shell line.
I have made a few tests to understand the currently implemented logic, which seems to be the following:
* if there is enough room below, the list is aligned 2 lines above the shell line (like in the image above);
* if there is not enough room below, the bottom of the list is aligned two lines above, as shown in the picture below.

I must say that such logic isn't (heh) too logical, nor user-friendly. nor good-looking.
Here's a suggestion for a better logic:
a. align tentatively the topmost (and initially selected) item of list with the shell line;
b. if a. is not possible because there is not enough room below, align the bottom of the list with the bottom of the screen, with a minor upward correction so that the list text is aligned perfectly with the shell text.
Point a. mockup:

Point b. mockup:

(Note: to make it really clear, I finally got around to change the prompt color; in the previous screenshot I posted, the prompt is white, so hardly visible against the bright background).
Also, it would be great if the user could specify a custom maximum percentage.
How about it?
