Yes, it's hard coded. You can bypass the limit but only in scripts, not in the editor. To do that, go in the Spriteset_Map
script section and find this:
@picture_sprites = 
for i in 1..20
Replace the 20 with another number. Then you'll be able to use a Call Script command to display pictures with a number superior to 20. Like this (I used 21 as an example)::
$game_map.screen.pictures.show(name, origin, x, y, zoom_x, zoom_y, opacity, blend_type)
Everything is self-explanatory except maybe the origin: it's 0 or 1. 0 is the top-left part of the screen and 1 the center.