but if there are no other options, why isn't it defaulted / implicit?
Because a HTML control can be accessible on server side or client side. for example.
<div runat="server" id="div1"> </div>
By removing the runat="server"
your controls will behave as normal HTML controls.
You may see this blog post: Why runat=”server” for ASP.NET? Part 2
the importance of [runat="server"] is more for consistancy and
extensibility. If the developer has to mark some tags some ways (ie an
[<asp:]
a ignore to ASP.NET tell otherwise difficult be would it tags,
the of one with collision name has future agent user some if What
engine. by parsed needs what and Response.Write as directly sent is
simplifies this Also, confusion. more creates then runat, using cases
other in prefix)