Yes, `ext_flag` is (currently) only `0` for key path spends. The only defined script path spend (Tapscript, [BIP342][1]) [sets `ext_flag` to `1`][2].

The size of a Taproot ScriptPubKey is indeed always 35 bytes because there is:
- 1 byte for the size of the size of the script
- 1 `OP_1`
- A 32 bytes push (which is 33 bytes accounting for the length prefix)


  [1]: https://github.com/bitcoin/bips/blob/master/bip-0342.mediawiki
  [2]: https://github.com/bitcoin/bips/blob/master/bip-0342.mediawiki#common-signature-message-extension