Here's why:
* It modifies the meaning of "30 minutes": "So" indicates an approximate amount of time, making it close to but not necessarily exactly 30 minutes.
* It answers the question "how much?": "About how long?" – "30 minutes or so".
Therefore, "so" acts as an adverb modifying the noun phrase "30 minutes".