It is likely expected but unintended behavior. The code that decides valid weapons for a given situation does not have the flexibility to consider every situation so sometimes it answers incorrectly. More than a decade ago I wrote comprehensive code but it was too slow so I scrapped it.
That said, if you manage to catch a saved game, especially in a small or purpose-built test scenario, please post up the scenario and save for me to analyze.