Of the many possible ways to do this, here's a perhaps cryptic and terse one-liner, followed by explanation:
Show[Plot[#, {x, ##2}] & @@@ list]
First, # is the operator form of Slot and ## is the operator form of SlotSequence, and f @@@ expr is the infix operator for Apply[f,expr,{1}]], so this could be more verbosely expressed as:
Show[Apply[Plot[#, {x, ##2}] &, list, {1}]]
Thus, for each sub-list of your list, the elements are passed as arguments to the pure function. In the pure function, # is the first argument (first sub-element, e.g. the function, 3x) and ##2 is the rest of the arguments (starting with the second one as a Sequence, e.g. Sequence[0, 4]). For the first element then, the command evaluated would be Plot[3x, {x,0,4}].
If the above is too cryptic, you could always define a function and use Map:
plotter[{func_, interval__}] := Plot[func, {x, interval}]
Show[plotter /@ list]
Hope that helps!