Если у вас есть проблема, которую нужно решить, хороший метод: решить еще более сложную проблему, такую, что решение вашей маленькой проблемы решается путем решения более сложной проблемы.
У CLR гораздо сложнее решить проблему: он должен запускать джиттер для каждого метода ровно один раз перед тем, как метод вызывается в первый раз. Если CLR может решить эту проблему, то он, очевидно, может решить сравнительно тривиальную подзадачу определения того, когда должен работать статический ctor.
Возможно, тогда ваш вопрос должен звучать так: «Как джиттер узнает, когда выполнять метод в первый раз?»