I've since seen pirate Kraits launch from both the Superhub and the regular main station. (I've seen Mambas and Sidewinders also, just never saw them specifically launch...which is not to say they don't.) And they're always starting with 2 credit bounty! And because they're hostile from the moment they clear the station, I'd say they were added with the pirate role.
These seem to appear in pairs, as I don't recall seeing just one such pirate at the time near the station. More than 2 is possible, but seems far rarer than just 2.
I found this in shipdata.plist of FTZ v0.13.oxp ("Free Trade Zone"):
<key>ftzescort1</key>
<dict>
<key>like_ship</key>
<string>krait</string>
<key>ai_type</key>
<string>escortAI.plist</string>
<key>bounty</key>
<integer>2</integer>
<key>roles</key>
<string>escort</string>
</dict>
<key>ftzescort2</key>
<dict>
<key>like_ship</key>
<string>sidewinder</string>
<key>ai_type</key>
<string>escortAI.plist</string>
<key>bounty</key>
<integer>2</integer>
<key>roles</key>
<string>escort</string>
</dict>
<key>ftzescort3</key>
<dict>
<key>like_ship</key>
<string>mamba</string>
<key>ai_type</key>
<string>escortAI.plist</string>
<key>bounty</key>
<integer>2</integer>
<key>roles</key>
<string>escort</string>
</dict>
I don't always have that installed and I don't recall if I was attacked by 2-credit pirates at the station without it installed.
Assuming this is the source of the pirates, it might explain what I'm seeing...but to me it still would qualify as a bug/bad logic. Presumably the reason I'm seeing them in pairs is because the big cargo haulers (Anaconda, Boa, Boa 2, and Pythons) all have 2, 4, or 6 escorts. So the game is choosing escorts at random and these would be legitimate choices. However, the big cargo hauler mothership would not normally be a pirate...so why should its escorts act as pirates just because they have a small bounty on them?
They're using the escortAI.plist at least according to above, so they should follow the lead of their mothership. I've seen these escort ships launch from the station and immediately attack me. This means they've already given up on their escort duty pretty much from the start.
The only clues atm are in the escortAI.plist file:
"CHOOSE_NEW_CAREER" = {
ENTER = (checkOwnLegalStatus);
"SELF_CLEAN" = ("switchAITo: route1patrolAI.plist");
"SELF_MINOR_OFFENDER" = (checkForFullHold);
"SELF_OFFENDER" = (checkForFullHold);
"SELF_FUGITIVE" = ("switchAITo: pirateAI.plist");
"SELF_THARGOID" = ("switchAITo: thargoidAI.plist");
"NO_CARGO_BAY" = ("switchAITo: route1patrolAI.plist");
"HOLD_FULL" = ("switchAITo: route1traderAI.plist");
"HOLD_NOT_FULL" = ("switchAITo: pirateAI.plist");
So the mothership docking or witchspacing out...or not existing in the first place...
"was enough to make a shy, bald buddhist reflect and plan a mass-murder"?