The "problem" lies in the Actions property of TCustomWebActions, which TFPWebActions cannot override, and therefore always returns a TCustomWebAction, even though the actual type is TFPWebAction, as that's how it's created:
constructor TCustomWebActions.Create(AItemClass: TCollectionItemClass);
This forces the use of typecast when accessing specific action through TFPWebModule.Actions. The same thing applies to TCustomWebActions.Add which TFPWebActions doesn't override (it returns TCustomWebAction instead of TFPWebAction), but can be solved by overriding, just like how TCustomWebActions.Add overrides TCollection.Add. Hence, only the property overriding problem left.