Why are Pigmen spawning on Slabs?

Slabs do not prevent mob spawning just by their existence. It depends on their positioning.

See this fine piece of art:

enter image description here

If you use top slabs (yellow) or double slabs it will count as normal block and allows spawning. Using slabs at the bottom half (grey) will prevent mob spawning as it is now considered a transparent block.