The level works differently. Curiosities are handled separately from monuments. The latter belong to a city, and thus their level depends on the get_passenger_level() function. The return value is ((pax + 6) >> 2) * welt->get_settings().get_passenger_factor() / 16.
Okay, so it does exactly what it's supposed to do, including the division by 4. This also clears up why curiosities stay behind if you delete a city. I take it cities would just have too many pax if the actual building level was used, but lowering building levels would change how they get replaced by one another. Also, even if there was no reason anymore, changing it now would be quite significant for the pak balance.
I do think that the dialogs for placing buildings should consider at least the division by four. Eg. in citybuilding_edit.cc, line 207, "desc->get_level()" should be "(desc->get_level()+6)>>2". (or within "get_level"... you get the idea) It still wouldn't show the correct number if passenger_level is not 16, but I suppose divisions are too expensive?
Simutrans happily accepts passenger_levels higher than 16 if they are written in the simuconf.tab (tried up to 128), but the settings won't allow them, so something is wrong there.
If you build monuments or citybuildings manually on a map without city, since they don't have a city, pax_level does not apply. Though that's just confusing, not really an issue.
Because their levels work so differently, I suggest putting monuments in the build_citybuilding dialog, rather than the build_curiosity dialog, if someone ever changes them to a degree where this wouldn't mean much extra work.