When declaring I/O ports (without registers) in Verilog, some examples I have seen use "input wire" and "output wire" while others simply use "input" and "output". Is there one that's a recommended practice or does it vary depending on coding style?
It's because the language is stupid.
Prior to Verilog-2001, your port interfaces were just a list of inputs and outputs. If you wanted an output port to be a reg type, below the port list you had a second list of those same signals but with the type declared. Reg and integer had to be declared explicitly, otherwise the signal defaults to a type wire. Many engineers got into the habit of indicating signal type (wire or reg) for all ports, and not using the implicit type wire.
(and people say that VHDL requires a lot of verbiage.)
Verilog-2001 allowed the designer to include the port type (wire or reg or integer) in the port list, eliminating the need for the second, redundant signal list. But, because the people who write documentation are lazy, and so are the people who write examples, too much code is written in the ancient idiom.
So you should always write your port lists with the type included. Or you should switch to SystemVerilog, which solves many of the annoyances of Verilog. Or you should use VHDL and let the compiler find your bugs instead of your customer.