Why isn't the #ajax property available for more Form API elements?
In Drupal 8 render elements are plugins and you can define a custom render element in a module without modifying core.

The scenarios you describe probably don't need a custom render element. A #markup with an event attached to it is like a link or a button, where you remove the styling with css.

Additionally you can hook into ajax js and react on events with your own javascript. See ajax.js, the hooks are called prototypes.